有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Jersey Rest客户端进行java异步大文件上载

我有下面的代码可以上传文件。它可以工作,但我需要让用户不等待上传完成上传异步

@Path("/files")
public class JerseyFileUpload {

private static final String SERVER_UPLOAD_LOCATION_FOLDER = "C://uploadedtest/";

/**
 * Upload a File
 */

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(FormDataMultiPart form) {

     FormDataBodyPart filePart = form.getField("file");

     ContentDisposition headerOfFilePart = filePart.getContentDisposition();
     System.out.println("============================================");
     System.out.println("Header is: " + headerOfFilePart.getFileName());
     System.out.println("============================================");

     InputStream fileInputStream =  filePart.getValueAs(InputStream.class);
     String filePath = SERVER_UPLOAD_LOCATION_FOLDER+headerOfFilePart.getFileName();
    // save the file to the server
    saveFile(fileInputStream, filePath);

    String output = "File saved to server location using: " + filePath;

    return Response.status(200).entity(output).build();

}

// save uploaded file to a defined location on the server
private void saveFile(InputStream uploadedInputStream, String serverLocation) {

    try {
        OutputStream outpuStream = new FileOutputStream(new File(
                serverLocation));
        int read = 0;
        byte[] bytes = new byte[1024];

        outpuStream = new FileOutputStream(new File(serverLocation));
        while ((read = uploadedInputStream.read(bytes)) != -1) {
            outpuStream.write(bytes, 0, read);
        }

        outpuStream.flush();
        outpuStream.close();

        uploadedInputStream.close();
    } catch (IOException e) {

        e.printStackTrace();
    }

}

}

我的Html文件是这样的

   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"  "http://www.w3.org/TR/html4/strict.dtd">
   <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Form Page</title>
    </head>
     <body>
     <h1>Select a file to upload</h1>

  <form action="rest/files/upload" method="post" enctype="multipart/form-data">

   <p>
    Select a file : <input type="file" name="file" size="45" />
   </p>

   <input type="submit" value="Upload It" />
</form>

   </body>
    </html>

我的要求是使其异步,并将其作为OCTECTSTREAM而不是Multipart运行,因为我的文件将更大,主要是5gb plus。谢谢你的帮助


共 (0) 个答案