【问题标题】:Uploading a file in Java using a servlet使用 servlet 在 Java 中上传文件
【发布时间】:2010-10-31 06:27:15
【问题描述】:

我正在使用 javazoom 进行上传

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
    PrintWriter out = null;
    JOptionPane.showMessageDialog(null, "Lets do this");
    try {
        response.setContentType("text/html;charset=UTF-8");
        try {
            MultipartFormDataRequest dataRequest = new MultipartFormDataRequest(request);
            //get uploaded files
            Hashtable files = dataRequest.getFiles();
            if (!files.isEmpty()) {
                UploadFile uploadFile = (UploadFile) files.get("filename");
                byte[] bytes = uploadFile.getData();
                String s = new String(bytes);

文件总是空的。 有什么帮助吗?


然后我尝试使用 Apache Commons FileUpload 执行此操作:

 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
     PrintWriter out = null;

        try {

            response.setContentType("text/html;charset=UTF-8");
            //MultipartFormDataRequest dataRequest = new MultipartFormDataRequest(request);
            //get uploaded files
            FileItemFactory factory = new DiskFileItemFactory();
            // Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factory);
            List files = null;
            try {
                files = upload.parseRequest(request);
            } catch (FileUploadException ex) {
                Logger.getLogger(ProcessUploadItem.class.getName()).log(Level.SEVERE, null, ex);
            }

它在files = upload.parseRequest(request); 失败

任何指针?

对不起,谢谢:)

【问题讨论】:

  • 标记问题时请注意提示提示。任何名称后数字小于 10 的标签都可能是错误的。避免创建新标签。
  • 啊thnx...我会记住这一点

标签: java servlets file-upload


【解决方案1】:

检查发送文件的表单是否定义了 enctype="multipart/form-data",如下所示:

<form enctype="multipart/form-data" action="...

根据RFC1867其他方式文件永远不会上传

【讨论】:

  • 我把这个写到我的另一个 servlet out.println("
    "); out.println("

    文件上传

    "); out.println("选择一个文件:"); out.println(""); out.println("
    "); out.println(""); out.println("
    ");
【解决方案2】:

我建议使用更流行的高配置库来执行此操作,例如 Apache Commons FileUpload。它更有可能发挥作用,拥有更好的文档并有更多的人来帮助您使用它。

【讨论】:

    【解决方案3】:

    您是否正在使用其他框架,例如 Trinidad 或类似的?它们通常包括恢复上传文件的过滤器,因此当进程到达您的服务器时,请求不包含任何附加文件。

    【讨论】:

    • 不,我不相信我是:S
    猜你喜欢
    • 2013-10-14
    • 1970-01-01
    • 2014-03-17
    • 2013-12-01
    • 2010-10-30
    • 2012-04-30
    • 2011-10-08
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多