我想将上传的文件存储在java中的特定位置。如果我上传a.pdf
,那么我希望它将其存储在“/home/rahul/doc/upload/”
。我经历了一些堆栈溢出的问题和答案,但我对解决方案不满意。
我正在使用 Play Framework 2.1.2
。我不使用 servlet
。
我正在上传,但它正在将文件存储到临时目录中,但我希望该文件存储到一个文件夹中,而不是临时文件,我希望该文件像 a.pdf 一样位于文件夹中,而不是像临时文件一样。
public static Result upload() {
MultipartFormData body = request().body().asMultipartFormData();
FilePart filePart1 = body.getFile("filePart1");
File newFile1 = new File("path in computer");
File file1 = filePart1.getFile();
InputStream isFile1 = new FileInputStream(file1);
byte[] byteFile1 = IOUtils.toByteArray(isFile1);
FileUtils.writeByteArrayToFile(newFile1, byteFile1);
isFile1.close();
}
但我对此解决方案不满意,我正在上传多个文档文件。
例如。我上传一份文档 ab.docx,然后上传后它存储临时目录,文件是这样的:
它的位置是这样的:/tmp/multipartBody5886394566842144137asTemporaryFile
但我想要这个:/upload/ab.docx
告诉我一些解决方案来解决这个问题。
最佳答案
一切都是正确的,因为最后一步您需要将临时文件renameTo
到您的上传文件夹中,您不需要围绕流进行操作,就像这样简单:
public static Result upload() {
Http.MultipartFormData body = request().body().asMultipartFormData();
FilePart upload = body.getFile("picture");
if (upload != null) {
String targetPath = "/your/target/upload-dir/" + upload.getFilename();
upload.getFile().renameTo(new File(targetPath));
return ok("File saved in " + targetPath);
} else {
return badRequest("Something Wrong");
}
}
顺便说一句,如果 targetPath 不存在,您应该进行一些检查,以防止错误和/或覆盖。典型的方法是如果同名文件已存在,则增加文件名,例如发送 a.pdf
三次应将文件保存为 a.pdf
,a_01.pdf
、a_02.pdf
等
关于java - java中如何将上传的多个pdf文件存储到特定位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18457518/