Flex 基于Http方式上傳圖片(轉(zhuǎn))

          首先下載 commons-fileupload-1.2.1.jar和commons-io-1.1.jar 
          flex端代碼: 


          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                          layout
          ="absolute"
                          xmlns
          ="*"
                          creationComplete
          ="init();">
              
          <mx:Script>
                  
          <![CDATA[
                      
          import flash.events.*;

                      
          import mx.controls.Alert;
                      
          import mx.events.CloseEvent;
                      
          import mx.managers.CursorManager;

                      
          private var file:FileReference;
                      
          private var byteArray:ByteArray;
                      
          private var bitmapData:BitmapData;
                      
          private var loader:Loader=new Loader();

                      
          private function init():void
                      
          {
                          Security.allowDomain(
          "*");
                          file
          =new FileReference();
                          file.addEventListener(Event.COMPLETE, fileReferenceCompleteHandler);
                          file.addEventListener(Event.SELECT, fileReferenceSelectHandler);
                      }


                      
          //選擇上傳的圖片
                      private function choose():void
                      
          {
                          var imageTypes:FileFilter
          =new FileFilter("Images (*.jpg, *.jpeg, *.png)""*.jpg;*.jpeg;*.png");
                          var allTypes:Array
          =new Array(imageTypes);
                          file.browse(allTypes);
          //                file.browse();
                      }


                      
          private function toUpload():void
                      
          {
                          
          if (bitmapData == null)
                          
          {
                              Alert.show(
          "請您先選擇要上傳的圖片");
                          }

                          
          else
                          
          {
                              Alert.show(
          "上傳 " + file.name + " (共 " + Math.round(file.size) + " 字節(jié))?""確認上傳", Alert.YES | Alert.NO, null, proceedWithUpload);
                          }

                      }


                      
          //監(jiān)聽文件上傳狀態(tài)
                      private function onProgress(e:ProgressEvent):void
                      
          {
                          lbProgress.text
          =" 已上傳 " + e.bytesLoaded + " 字節(jié),共 " + e.bytesTotal + " 字節(jié)";
                          var proc:uint
          =e.bytesLoaded / e.bytesTotal * 100;
                          bar.setProgress(proc, 
          100);
                          bar.label
          ="當(dāng)前進度: " + " " + proc + "%";
                          
          if (e.bytesLoaded == e.bytesTotal)
                          
          {
                              CursorManager.removeBusyCursor();
                          }

                      }


                      
          //上傳圖片到服務(wù)器
                      private function proceedWithUpload(e:CloseEvent):void
                      
          {
                          
          if (e.detail == Alert.YES)
                          
          {
                              
          //進度監(jiān)聽
                              file.addEventListener(ProgressEvent.PROGRESS, onProgress);
                              var request:URLRequest
          =new URLRequest("http://localhost:8080/FileUploaded");
                              
          //設(shè)置鼠標(biāo)忙狀態(tài)
                              CursorManager.setBusyCursor();
                              
          try
                              
          {
                                  file.upload(request);
                                  Alert.show(
          "恭喜你,上傳成功");
                              }

                              
          catch (error:Error)
                              
          {
                                  Alert.show(
          "上傳失敗");
                                  trace(
          "上傳失敗");
                              }


                          }

                      }


                      
          //上傳完成調(diào)用
                      private function completeHandle(event:Event):void
                      
          {
                          Alert.show(
          "恭喜你,上傳成功");
                      }


                      
          //載入本地圖片
                      private function fileReferenceCompleteHandler(e:Event):void
                      
          {
                          byteArray
          =file.data;
                          loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler);
                          loader.loadBytes(byteArray);
                      }


                      
          //圖片載入完成顯示在預(yù)覽框中
                      private function loaderCompleteHandler(e:Event):void
                      
          {
                          var bitmap:Bitmap
          =Bitmap(loader.content);
                          bitmapData
          =bitmap.bitmapData;
                          img.source
          =bitmap;
                      }


                      
          //選擇文件動作監(jiān)聽
                      private function fileReferenceSelectHandler(e:Event):void
                      
          {
                          file.removeEventListener(ProgressEvent.PROGRESS, onProgress);
                          file.load();
                      }

                  ]]
          >
              
          </mx:Script>

              
          <mx:Canvas width="100%"
                         height
          ="100%"
                         x
          ="10"
                         y
          ="170"
                         fontSize
          ="15">
                  
          <mx:VBox width="100%"
                           horizontalAlign
          ="center">
                      
          <mx:Label id="lbProgress"
                                text
          ="上傳"/>
                      
          <mx:ProgressBar id="bar"
                                      labelPlacement
          ="bottom"
                                      themeColor
          ="#F20D7A"
                                      minimum
          ="0"
                                      visible
          ="true"
                                      maximum
          ="100"
                                      label
          ="當(dāng)前進度: 0%"
                                      direction
          ="right"
                                      mode
          ="manual"
                                      width
          ="200"/>
                      
          <mx:Button label="上傳文件"
                                 click
          ="toUpload();"/>
                  
          </mx:VBox>
                  
          <mx:Panel width="469"
                            height
          ="392"
                            verticalGap
          ="0"
                            horizontalAlign
          ="center"
                            verticalAlign
          ="middle"
                            x
          ="408"
                            y
          ="129"
                            layout
          ="absolute">
                      
          <mx:Button label="選擇文件"
                                 click
          ="choose();"
                                 x
          ="178"
                                 y
          ="9"/>
                      
          <mx:Image id="img"
                                width
          ="400"
                                height
          ="300"
                                x
          ="36"
                                y
          ="44"/>

                  
          </mx:Panel>

              
          </mx:Canvas>
          </mx:Application>

          java servlet端代碼 

          package upload;

          import java.io.File;
          import java.io.IOException;
          import java.io.PrintWriter;
          import java.util.Iterator;
          import java.util.List;

          import javax.servlet.ServletException;
          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.FileUploadException;
          import org.apache.commons.fileupload.disk.DiskFileItemFactory;
          import org.apache.commons.fileupload.servlet.ServletFileUpload;

          /**
           * 
          @author lqw
           
          */

          public class FileUploaded extends HttpServlet {

              
          // 定義文件的上傳路徑
              private String uploadPath = "d:\\a\\";

              
          // 限制文件的上傳大小
              private int maxPostSize = 100 * 1024 * 1024;

              
          public FileUploaded() {
                  
          super();
              }


              
          public void destroy() {
                  
          super.destroy();
              }


              
          protected void processRequest(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  System.out.println(
          "to upload picture !");
                  response.setContentType(
          "text/html;charset=UTF-8");
                  PrintWriter out 
          = response.getWriter();

                  
          // 保存文件到服務(wù)器中

                  DiskFileItemFactory factory 
          = new DiskFileItemFactory();
                  factory.setSizeThreshold(
          4096);
                  ServletFileUpload upload 
          = new ServletFileUpload(factory);
                  upload.setSizeMax(maxPostSize);
                  
          try {
                      List fileItems 
          = upload.parseRequest(request);
                      Iterator iter 
          = fileItems.iterator();
                      
          while (iter.hasNext()) {
                          FileItem item 
          = (FileItem) iter.next();
                          
          if (!item.isFormField()) {
                              String name 
          = item.getName();
                              System.out.println(name);
                              
          try {
                                  item.write(
          new File(uploadPath + name));
                                  
          // SaveFile s = new SaveFile();
                                  
          // s.saveFile(name);
                              }
           catch (Exception e) {
                                  e.printStackTrace();
                              }

                          }

                      }

                  }
           catch (FileUploadException e) {
                      e.printStackTrace();
                      System.out.println(e.getMessage() 
          + "結(jié)束");
                  }

              }


              
          protected void doGet(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  processRequest(request, response);
              }


              
          protected void doPost(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  processRequest(request, response);
              }


              
          public String getServletInfo() {
                  
          return "Short description";
              }


          }


          web.xml 文件內(nèi)容:
          <?xml version = '1.0' encoding = 'windows-1252'?>
          <web-app 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" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
              
               
          <servlet>
                  
          <servlet-name>FileUploaded</servlet-name>
                  
          <servlet-class>upload.FileUploaded</servlet-class>
              
          </servlet>

              
          <servlet-mapping>
                  
          <servlet-name>FileUploaded</servlet-name>
                  
          <url-pattern>/FileUploaded</url-pattern>
              
          </servlet-mapping>
              
              
          <session-config>
                  
          <session-timeout>35</session-timeout>
              
          </session-config>
              
          <mime-mapping>
                  
          <extension>html</extension>
                  
          <mime-type>text/html</mime-type>
              
          </mime-mapping>
              
          <mime-mapping>
                  
          <extension>txt</extension>
                  
          <mime-type>text/plain</mime-type>
              
          </mime-mapping>
              
          </web-app>

          FLEX端如果出現(xiàn)安全沙箱的問題:是由于在tomcat環(huán)境下沒有聲明應(yīng)用程序能被外部訪問. 

          在程序的部署文件夾下添加crossdomain.xml文件.文件內(nèi)容為: 
          <?xml version="1.0"?> 

          <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 

          <cross-domain-policy> 

          <allow-access-from domain="*" secure="false"/> 
          <allow-http-request-headers-from domain="*" headers="*" secure="false"/> 

          </cross-domain-policy>
          http://blog.163.com/geliang0021@126/blog/static/32322329201111295559423/
          http://wenku.baidu.com/view/9b1fceb769dc5022aaea00e9.html

          posted on 2012-09-11 22:36 youngturk 閱讀(4112) 評論(0)  編輯  收藏 所屬分類: Java基礎(chǔ)Flex DEVservlet

          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結(jié)構(gòu)
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學(xué)習(xí)

          Flex學(xué)習(xí)

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆安县| 霍山县| 玛沁县| 合肥市| 南华县| 绥化市| 凤翔县| 手游| 特克斯县| 衡山县| 普洱| 周口市| 洞口县| 简阳市| 宜都市| 太康县| 交口县| 加查县| 闽清县| 昌吉市| 梁山县| 汤原县| 城固县| 广水市| 东港市| 通山县| 商洛市| 开原市| 新郑市| 冀州市| 永康市| 怀集县| 九龙坡区| 延庆县| 翁牛特旗| 静海县| 沁水县| 长泰县| 准格尔旗| 壶关县| 岳普湖县|