论坛首页 编程语言技术论坛

flex文件上传,mmons-fileupload做后台

浏览 6677 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-27  
flex端的AS代码:
internal function init():void{ 
    Security.allowDomain("*"); 
     file = new FileReference();   
     file.addEventListener(Event.SELECT, onSelect);   
    file.addEventListener(ProgressEvent.PROGRESS, processHandler);   
    file.addEventListener(IOErrorEvent.IO_ERROR,ioShow);                 
    } 
internal function ioShow(evt: IOErrorEvent){ 
     Alert.show(evt.toString(),"IO错误"); 
    } 
internal function doSelect():void{ 
//文件类型限制,第一个是文件类型选项只显示"png"类型的,第二个是只把.png文件显示出来
     var imageTypes:FileFilter = new FileFilter("png", "*.png");   
     var allTypes:Array = new Array(imageTypes);   
     file.browse(allTypes); 
    } 
internal function onSelect(evt:Event):void{ 
     pic_txt.text = file.name; 
    } 
internal function doUpload():void{ 
//指向struts的一个action,或servlte,注意一写要写完整路径 
     var request:URLRequest = new URLRequest("http://localhost:8080/productManage/uploadPic.do"); 
     
     fileName = "productImage\\"+new Date().getTime().toString() +".png"; 
       request.data = new URLVariables("filename="+fileName); 
          file.upload(request); 
       CursorManager.setBusyCursor(); 
    } 
//上传完成更新源 
    internal function processHandler(evt:ProgressEvent):void{ 
     if(evt.bytesLoaded == evt.bytesTotal){ 
       
      CursorManager.removeBusyCursor(); 
       
      var n:Number = new Date().getTime();           
      img.source = fileName +"?time="+n; 
     } 
    }  
<mx:TextInput id="pic_txt" width="150"/> 
   <mx:Button label="选择文件" click="doSelect()"/> 
   <mx:Button label="开始上传" click="doUpload()"/>

 

java端:
import java.io.File; 
import java.util.List; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.apache.commons.fileupload.DiskFileUpload; 
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.struts.action.Action; 
import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.action.ActionMapping; 
public class UploadPicAction extends Action { 
public ActionForward execute(ActionMapping mapping, ActionForm form, 
   HttpServletRequest request, HttpServletResponse response) { 
  response.setContentType("text/html; charset=UTF-8"); 
  DiskFileUpload upload = new DiskFileUpload(); 
  try { 
   List itemlist = upload.parseRequest(request); 
//itemlist里包含多个参数,所以要判断一下是文件类型,还是参数字段,这里修改一下可以用于多个文件上传
   for (int i = 0; i < itemlist.size(); i++) { 
    FileItem item = (FileItem) itemlist.get(i); 
    if (item.isFormField())[color=red]//是表单字段跳过 [/color]
     continue; 
    String name = request.getRealPath("") + "[url=file://\\bin\\]\\bin\\[/url]" 
      + request.getParameter("filename");//获得Web应用绝对路径,如果路径不在web应用下,由于安全机制,将会说"找不到系统指定路径" 

    try { 
     File f = new File(name); 
     item.write(f); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
   } 
  } catch (FileUploadException e) { 
   e.printStackTrace(); 
  } 
  return null; 
} 
} 




只要是为了总结,以便以后用,所以就不排版了 ,主要是用flex做前端,java开源的mmons-fileupload组件做后台。。。。
   发表时间:2008-08-31  
请问FLEX 前端能操作本地文件吗? 我想用FLEX来读取本地文件特定的位置, 就像在后台来操作文件的 skipbytes一样, 在前台能否控制。 谢谢!
0 请登录后投票
   发表时间:2008-09-27  
jacklan 写道
请问FLEX 前端能操作本地文件吗? 我想用FLEX来读取本地文件特定的位置, 就像在后台来操作文件的 skipbytes一样, 在前台能否控制。 谢谢!

据我所知应该不能,flex受安全限制,一般都是通过后台操作本地文件的,就像你用js操作文件,一样会报安全限制一样。。。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics