Flex文件上传

   今天花了一点时间研究了一下FLEX的文件上传,后台采用PHP进行处理。本文的代码是整合了网上

查找到的一些代码,都是转载来转载去的,原文已经不可考,就不一一在这里列出,感谢前人的分享

精神,向他们学习吧。

 

    1. 首先先介绍点基本知识,php端的全局变量$_FILES数组

       $_FILES['userfile']['name']               客户端机器文件的原名称。

       $_FILES['userfile']['type']                 文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。

       $_FILES['userfile']['size']                  已上传文件的大小,单位为字节。

       $_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。

       $_FILES['userfile']['error']                和该文件上传相关的错误代码。

 

     2. php文件上传大小设置

file_uploads = on //是否允许系统支持文件上传
;upload_tmp_dir //临时文件的存储路径,如果不设置就是系统默认的路径
upload_max_filesize = 2m //允许文件上传最大体积
post_max_size = 2m //通过post方法给php时,php所能接受的最大数据容量
max_execution_time = 30 //每个script所执行的最大时间
memory_limit = 8m //每个script所能消耗的最大memory 

       上面这些值都是php.ini的默认值,如果我们要传更大的文件,需要对当中的某些具体参数进行修改

 

       一般上传的文件的信息都是保存在了$_FILES数组中,我们先来看一下PHP端如何处理。我们知道客户端上传的

文件保存在了系统默认的临时文件夹中,我们的目标就是要将临时文件夹中的文件拷贝到我们需要保存的地址当中去。

       我们先来看一下PHP端的代码,将一一做出解释:

        

       PHP端的代码比较简单,对上传的文件生成了一个独一无二的文件名,并对文件大小,文件名唯一性进行了简单的判断,

最后使用php的move_upload_flie函数来实现文件的移动。对于随即数,可以使用rand和mt_rand函数,据说mt_rand

要比rand要快很多,有兴趣的同学可以自己写个测试程序测试一下。

 

       现在我们转到前端FLEX处理,Flex采用actionscript语言+xml语言。代码中有详细的注释,就不做详细说明了。

        

FileUploadServlet.class package test; import java.io.File; import java.io.IOException; 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; public class FileUploadServlet extends HttpServlet { // 定义文件的上传路径 private String uploadPath = "G://upload/"; // 限制文件的上传大小 private int maxPostSize = 100 * 1024 * 1024; public FileUploadServlet() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 得到用户需要保存的服装的id //String dressId = request.getParameter("dressID"); //System.out.println(dressId); // 保存文件到服务器中 response.setContentType("text/html; charset=UTF-8"); 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)); } catch (Exception e) { e.printStackTrace(); } } } } catch (FileUploadException e) { e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void init() throws ServletException { // Put your code here } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值