浏览 6713 次
精华帖 (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组件做后台。。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-08-31
请问FLEX 前端能操作本地文件吗? 我想用FLEX来读取本地文件特定的位置, 就像在后台来操作文件的 skipbytes一样, 在前台能否控制。 谢谢!
|
|
返回顶楼 | |
发表时间:2008-09-27
jacklan 写道 请问FLEX 前端能操作本地文件吗? 我想用FLEX来读取本地文件特定的位置, 就像在后台来操作文件的 skipbytes一样, 在前台能否控制。 谢谢!
据我所知应该不能,flex受安全限制,一般都是通过后台操作本地文件的,就像你用js操作文件,一样会报安全限制一样。。。 |
|
返回顶楼 | |