Folks,

Even I am also facing same problem.

I upload a file from Flex to server through a Java servlet.

My project environment :
------------------------------------------------
Flex 3
Targeted : Flash Player 9.0.214
BlazeDS
Tomcat 6.0.18


Awaiting response.

 ~ Mor


---------- Forwarded message ----------
From: baji <[email protected]>
Date: Mar 21, 8:21 pm
Subject: File Upload using flex and java servlet
To: Flex India Community


Hi,

I am trying to do file upload from flex to java servlet..problem is
that request is not coming to servlet

here is error:

Error #2038 : File I/o Error :URL:http://171.189.87.49:7001/WSTest/
action/FileServlet..

any help would be apprecaited..

here is my mxml
........................
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
layout="absolute" creationComplete="initApp();">
        <mx:Script>
         <![CDATA[
                        // file upload functions

                        import mx.controls.Alert;
                import mx.utils.ObjectUtil;
                import flash.events.*;
            import flash.net.FileReference;
            import flash.net.URLRequest;
                import flash.net.URLLoader;
                import flash.net.URLStream;

            public var fileRef:FileReference = new FileReference();
            public var req:URLRequest = new URLRequest("http://
171.189.87.49:7001/WSTest/upload.jsp");
           // private var loader:URLLoader = new URLLoader();
           // private var stream:URLStream;

        private function initApp():void {
           // fileRef = new FileReference();
            fileRef.addEventListener(Event.CANCEL, traceEvent);
            fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,
completeEvent);
            fileRef.addEventListener(Event.SELECT, selectEvent);
            fileRef.addEventListener(IOErrorEvent.IO_ERROR,
onUploadIoError);
            fileRef.addEventListener(Event.OPEN, traceEvent);
            fileRef.addEventListener(ProgressEvent.PROGRESS,
progressEvent);

fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
traceEvent);
        }

                private function traceEvent(event:Event):void {
                        var tmp:String =
"================================\n";
                        ta.text += tmp + event.type + " event:" +
mx.utils.ObjectUtil.toString(event) + "\n" ;
                        ta.verticalScrollPosition += 20;
                }

                private function ioErrorEvent(event:IOErrorEvent):void
{
                        traceEvent(event);
                        Alert.show("IOError:" + event.text);

                }

                private function selectEvent(event:Event):void{
                        btn_upload.enabled = true;
                        traceEvent(event);
                        filename.text = fileRef.name;
                        progressBar.setProgress(0, 100);
                        progressBar.label = "Loading 0%";
                }

                private function progressEvent
(event:ProgressEvent):void {
                         var numPerc:Number = Math.round((Number
(event.bytesLoaded) /
Number(event.bytesTotal)) * 100);
                progressBar.setProgress(numPerc, 100);
                progressBar.label = numPerc + "%";

                        //progressBar.setProgress(event.bytesLoaded,
event.bytesTotal);
                        traceEvent(event);
                }
                // Called on upload io error
            private function onUploadIoError(event:IOErrorEvent):void
{
                Alert.show("IO Error in uploading file.", event.text);
              //  PopUpManager.removePopUp(_winProgress);
               // _winProgress == null;
                fileRef.cancel();
               // clearUpload();
            }

                private function completeEvent(event:DataEvent):void {
                        progressBar.label = "Complete.";
                        filename.text += event.data+" uploaded";
                        traceEvent(event);
                        btn_upload.enabled = false;
//                      btn_cancel.enabled = false;
                        ta.text=event.data;
                }
                private function dataloaded(event:Event):void {
                         var xmlResponse:XML = XML((event.target as
URLLoader).data);

                 trace(xmlResponse);
                         ta.text=xmlResponse;
                }
                private function uploadFile():void {
                        //var param:String = "author=" +
ti_author.text;

                        req.contentType="multipart/form-data";
                        //req.contentType="text/html";
                        //stream = new URLStream();
                        //alert
                        req.method = URLRequestMethod.POST;

                        var vars:URLVariables = new URLVariables();

                        // Set the data fields as appropriate
                        vars.author = ti_author.text;

                        // Assign the data fields to the request
                        req.data = vars;

                        //loader.addEventListener(Event.COMPLETE,
dataloaded);
                        //Alert.show("url"+req.requestHeaders);
                        //loader.load(req);
                        //
stream.addEventListener(IOErrorEvent.IO_ERROR,onUploadIoError);
                        //stream.addEventListener
(Event.COMPLETE,completeEvent);
                        //stream.addEventListener
(ProgressEvent.PROGRESS,progressEvent);
            //try {
            //   trace("bytes"+ stream.bytesAvailable);
               // stream.load(req);
             fileRef.upload(req);
           // } catch (error:Error) {
            //    trace("Unable to load requested
URL."+error.getStackTrace());
           // }
//                      btn_cancel.enabled = true;

                        //progressBar.label = "Uploading...";

                }

         ]]>
         </mx:Script>

          <mx:Panel id="summaryPanel" width="500" headerHeight="5"
borderThickness="1">
              <mx:Label text="Commercial Categories"
fontWeight="bold" />
             <mx:DataGrid id="myGrid" width="350" height="200"
      dataProvider="{a_cats}" >
      <mx:columns>
         <mx:DataGridColumn dataField="categoryId" />
         <mx:DataGridColumn dataField="description" />
      </mx:columns>
   </mx:DataGrid>

   <mx:Panel title="Flex 3 File Uploading Demo" width="100%"
height="100%" >
                <mx:Form>

                        <mx:FormItem label="Selected File:">
                            <mx:Label id="filename"/>
                        </mx:FormItem>

                        <mx:FormItem label="Upload By:">
                                <mx:TextInput id="ti_author"
text="Baji" />
                        </mx:FormItem>

                        <mx:FormItem direction="horizontal"
width="100%">
                                <mx:Button width="80" label="Browse"
click="fileRef.browse()" />
                                <mx:Button width="80" label="Upload"
id="btn_upload"
click="uploadFile()" />
                                <mx:Button width="80" label="Cancel"
id="btn_cancel"
enabled="false" click="fileRef.cancel()" />
                        </mx:FormItem>

                        <mx:HRule width="100%" tabEnabled="false"/>

                        <mx:FormItem label="Progress:">
                                <mx:ProgressBar id="progressBar"
mode="manual" />
                        </mx:FormItem>

                        <mx:FormItem label="Events:">
                                <mx:TextArea id="ta" width="350"
height="200" />
                        </mx:FormItem>

                </mx:Form>

        </mx:Panel>

        </mx:Panel>

</mx:Application>

web.xml
.............
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
        xmlns="http://java.sun.com/xml/ns/j2ee";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
       http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>

<servlet>
        <servlet-name>XFireServlet</servlet-name>
        <servlet-
class>org.codehaus.xfire.transport.http.XFireConfigurableServlet
         </servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/servlet/XFireServlet/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
 <servlet>
  <servlet-name>FileServlet</servlet-name>
  <servlet-class>com.boa.flex.servlet.UploadFileServlet</servlet-
class>

</servlet>
 <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern>/action/*</url-pattern>
    </servlet-mapping>
 </web-app>
........
servlet
.........

package com.boa.flex.servlet;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author nbkzk5e
 *
 */
public class UploadFileServlet extends HttpServlet
{
        /* (non-Javadoc)
         * @see
javax.servlet.http.HttpServlet#service
(javax.servlet.http.HttpServletReques t,
javax.servlet.http.HttpServletResponse)
         */

        private static final Log log =
LogFactory.getLog(UploadFileServlet.class);
        //@Override
        protected void doGet(HttpServletRequest req,
HttpServletResponse
resp)
                        throws ServletException, IOException {
                // TODO Auto-generated method stub
                super.doGet(req, resp);
                doPost(req,resp);
        }

        //@Override
        protected void doPost(HttpServletRequest req,
HttpServletResponse
res)
                        throws ServletException, IOException {
                  log.info("am in servlet");
                  log.info("author"+req);

                                  File disk = null;
                  FileItem item = null;
                  FileItemFactory factory = new DiskFileItemFactory();
                  Iterator iter = null;
                  List items = null;
                  ServletFileUpload upload = new ServletFileUpload
( factory );
                  ServletOutputStream out = null;

                  try
                  {
                    // Parse the incoming HTTP request
                    // Commons takes over incoming request at this
point
                    // Get an iterator for all the data that was sent
                    // TODO: Leverage generics
                    log.info("am in servlet");
                        items = upload.parseRequest( req );
                    iter = items.iterator();

                    // Set a response content type
                    res.setContentType( "text/xml" );

                    // Setup the output stream for the return XML data
                    out = res.getOutputStream();
                    out.println( "<response>" );

                    // Iterate through the incoming request data
                    while( iter.hasNext() )
                    {
                      // Get the current item in the iteration
                      item = ( FileItem )iter.next();

                      // If the current item is an HTML form field
                      if( item.isFormField() )
                      {
                        // Return an XML node with the field name and
value
                        out.println( "<field name=\"" +
item.getFieldName() + "\"
value=\"" + item.getString() + "\" />"  );

                        // If the current item is file data
                      } else {
                        // Specify where on disk to write the file
                        // Using a servlet init param to specify
location on disk
                        // Write the file data to disk
                        // TODO: Place restrictions on upload data
                        disk = new File( "C:\\"+item.getName() );
                       log.info("am after disk");
                        item.write( disk );

                        // Return an XML node with the file name and
size (in bytes)
                        out.println( "<file name=\"" + item.getName()
+ "\" size=\""
+ item.getSize() + "\" />"  );
                      }
                    }

                    // Close off the response XML data and stream
                    out.println( "</response>" );
                    out.close();
                  // Rudimentary handling of any exceptions
                  // TODO: Something useful if an error occurs
                  } catch( FileUploadException fue ) {
                    fue.printStackTrace();
                  } catch( IOException ioe ) {
                    log.info("io error");
                        ioe.printStackTrace();
                  } catch( Exception e ) {
                    e.printStackTrace();
                  }
                }

        }

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Flex 
India Community" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/flex_india?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to