我正在将Jersey用于我的REST后端,并且正在开发pdf上传功能。我准备了HTML表单和后端REST方法进行上传,但只能在PC驱动器中上传(例如,路径C:/ uploaded)。有没有方法可以在我的应用程序之外的Tomcat目录中上载?例如,在“ webapps /我的文件”下?
如果需要,我正在使用带有多部分库的Jersey 2.3和Tomcat 8.5.37。
我阅读了很多有关turturals和其他问题的信息,但是所有这些都使用c:/ uploadedFiles或类似的文件作为上载位置,所以我的疑问仍然存在。
第一位,我写了我的REST服务:
@POST
@Path("upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public String uploadFile (@FormDataParam("file") InputStream file, @FormDataParam("file") FormDataContentDisposition fileData) {
String uploadPath = "C:\\uploaded" + fileData.getFileName();
try {
int read = 0;
byte[] bytes = new byte[1024];
OutputStream out = new FileOutputStream(new File (uploadPath));
while ((read = file.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
return "Completed";
} catch (IOException ex) {
return ex.getMessage();
}
}
然后,我尝试使用POST方法从Postman调用它,并使用一个简单的pdf文件作为请求正文,并且它可以工作。
但是现在我要上传到服务器文件夹中,而不要上传到任何C:/驱动器位置。我想知道,该目录应该放在服务器的什么位置?我在webapps /下尝试过,可以吗?然后,如何正确设置变量“ uploadPath”以在该目录中上传?