iteye_12132 2009-09-05 20:20
浏览 175
已采纳

如何在服务器端 读取Ext.ux.UploadDialog上传的文件?

在做文件上传的时候,发现了Ext.ux.UploadDialog这个强大的东西。

不过,不知道如何在服务器端(JAVA环境)读取客户端传过来的文件。请问有人成功实现过吗?

网络上搜索到的例子,无法使用。代码如下:
//
DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

List items = upload.parseRequest(request);//这一句报错。

期待。。。

[b]问题补充:[/b]
DiskFileUpload fu = new DiskFileUpload(); //已经是废弃了的
List fileItems = fu.parseRequest(request); //已经是废弃了的

另外,如果能同时指出客户端属性 url 的值就更明确了。

To:Rowen 谢谢的回复。你的代码运行不了。
[b]问题补充:[/b]
To Rowen:
谢谢你的帮助!
问题已经解决。
1。要导入 commons.io.jar包。
2。upload.js调用 Ext.ux.UploadDialog时候,url属性要包含项目名。
3. DiskFileUpload fu = new DiskFileUpload();

确实已经废弃,建议使用:
DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

  • 写回答

3条回答 默认 最新

  • iteye_20589 2009-09-05 21:02
    关注

    [code="java"]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.DiskFileUpload;
    import org.apache.commons.fileupload.FileItem;
    public class UpFileServlet extends HttpServlet {
    private String uploadPath="c:\Upfile\"; // 上传文件的目录

    private String tempPath="c:\upfiel"; // 临时文件目录

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                doPost(request,response);
    }
    
    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try {    
            DiskFileUpload fu = new DiskFileUpload();
            // 设置最大文件尺寸,这里是4MB    
            fu.setSizeMax(4194304);    
            // 设置缓冲区大小,这里是4KB    
            fu.setSizeThreshold(4096);    
            // 设置临时目录:    
            fu.setRepositoryPath(tempPath);    
    
            // 得到所有的文件:    
            List fileItems = fu.parseRequest(request);    
            Iterator i = fileItems.iterator();    
            // 依次处理每一个文件:    
            while(i.hasNext()) {    
                FileItem fi = (FileItem)i.next();    
                // 获得文件名,这个文件名包括路径:    
                String fileName = fi.getName();
                int start=fileName.lastIndexOf("\\");
                //获得上传的文件名
                String paths=fileName.substring(start+1, fileName.length());
                fi.write(new File(uploadPath+paths));   
            }    
            response.getWriter().write("{'success':true,'message':'文件上传成功'}");
        }    
        catch(Exception e) {    
            System.out.println(e.getMessage()+" : "+e.getCause());
            response.getWriter().write("{'success':false,'message':error...'}");
        }    
    }
    
    
    public void init() throws ServletException {
            // 文件夹不存在就自动创建!
            if(!new File(uploadPath).isDirectory())    
                new File(uploadPath).mkdirs();    
            if(!new File(tempPath).isDirectory())    
                new File(tempPath).mkdirs();  
    }
    

    }[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大