希望はこれです。私は私のシステムでそれを確認しました。これはファイルのサイズをバイト単位で表示します。
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail) {
String uploadedFileLocation = "/home/Desktop/" + fileDetail.getFileName();
// save it
writeToFile(uploadedInputStream, uploadedFileLocation);
File file = new File(uploadedFileLocation);
System.out.println(file.length() + " in bytes");
String output = "File uploaded to : " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
// save uploaded file to new location
private void writeToFile(InputStream uploadedInputStream, String uploadedFileLocation) {
try {
OutputStream out = new FileOutputStream(new File(uploadedFileLocation));
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
また、リソースの設定を拡張して、アプリケーションのクラスにこれを追加し、あなたのpom.xmlに
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.13</version>
</dependency>
を次の依存関係を持っていることを確認してください。これにより、ジャージーにマルチパートのコンテンツが登録されたクラスが登録されます。 `@ContextのHttpServletRequest request`を使用して、あなたの方法で
super(YourClass.class, MultiPartFeature.class);
を注入' HttpServletRequest'と 'request.getContentLengthを()'してみてください。 –