使用ajax和servlet上传文件

时间:2014-03-31 17:21:37

标签: ajax jsp servlets file-upload apache-commons-fileupload

我试图使用ajax和servlet在我的Web应用程序中上传文件。 我的ajax代码是这样的:

<script>
    var client = new XMLHttpRequest();

    function upload2() {
        alert("in upload");
        var file = document.getElementById("uploadfile");
        /* Create a FormData instance */
        var formData = new FormData();
        /* Add the file */
        formData.append("upload", file.files[0]);
        client.open("post", "fileupload", true);
        client.setRequestHeader("Content-Type", "multipart/form-data");
        client.send(formData); /* Send to server */

    }
    /* Check the response status */
    client.onreadystatechange = function () {
        if (client.readyState == 4 && client.status == 200) {
            alert(client.statusText);
        }
    }
</script>

我的表格是这样的:

<input type="file" name="uploadfile" id="uploadfile"/>
<input type="button" value="upload" name="upload" onclick="upload2()"/>

我在函数中调用的servlet是:

ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
for (FileItem fi : upload.parseRequest(request)) {
    if (fi.isFormField()) {
        continue;
    }

    System.out.println("filename: " + fi.getName());
    InputStream is = fi.getInputStream();
    FileOutputStream fos = new FileOutputStream("C:\\Users\\admin\\Desktop\\SharedCrpto1\\web\\Files\\" + fi.getName());
    int x = is.read();

    while (x >= 0) {
        fos.write((byte) x);
        x = is.read();
        System.out.println("reading");
    }
}

但是这个代码得到了一个例外:

  

org.apache.commons.fileupload.FileUploadException:请求是   被拒绝,因为没有找到多部分边界

我认为的主要问题是如何使用通过在Servlet部分中附加文件而形成的表单数据。

我的问题是这个例外的原因是什么?

第二个问题是如何修改我的代码以便我一次可以上传多个文件?请帮忙。

0 个答案:

没有答案
相关问题