iteye_12132
iteye_12132
2009-09-05 20:20
浏览 169

如何在服务器端 读取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
    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]

    点赞 评论
  • iteye_20589
    iteye_20589 2009-09-05 21:41

    [quote]Rowen 谢谢的回复。你的代码运行不了。[/quote]
    这是我从Ext.ux.UploadDialog上传的文件的实例中复制出来的。。
    具体要你自己掌控。。。
    你不会直接ctrl+c and ctrl+v 吧。。 :cry:

    点赞 评论
  • iteye_20589
    iteye_20589 2009-09-05 21:44

    发了个EXTJS UploadDialog 多文件上传的实例附件到你站内信箱了。。
    你自己有空看看吧。。。

    点赞 评论

相关推荐