更改上传路径播放框架
change upload path play framework
我正在尝试更改图片的保存路径。
如果我调试,我会看到以下路径:
/tmp/playtemp4579361689183556686
我想我会用命令更改目录的路径:
file.renameTo(new File(path))
有人知道我怎样才能改变路径吗?
我哪里做错了?
完整代码如下。
public Result doUpload() {
Http.MultipartFormData<File> body = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart<File> picture = body.getFile("picture");
Path uploadPath = environment.rootPath().toPath();
final String uploadFolder = "/public/uploads/";
if (picture != null) {
String fileName = picture.getFilename();
String contentType = picture.getContentType();
File file = picture.getFile();
String path = uploadPath + uploadFolder + fileName;
Logger.info("path: {}", uploadPath);
Logger.info("whole path: {}", path);
file.renameTo(new File(path));
return ok("File uploaded");
} else {
flash("error", "Missing file");
return badRequest();
}
}
/tmp
(在适用的 OS 上)的使用是一种兼容性约定,因为它可由所有用户写入,而不仅仅是管理用户。
在我自己的上传项目中,我通常将文件复制到我想要的任何路径,然后删除临时文件:-
Files.copy(file.toPath(), Paths.get("/my/apps/file/store/path/", ("copy_" + name)), REPLACE_EXISTING)
Files.deleteIfExists(file.toPath)
renameTo 实际上应该做你想做的。
正如您在这个问题中看到的那样,我也在我的项目中使用它:
File movedFile = new File("/var/www/public/", "filename.jpg");
file.renameTo(movedFile);
我就是这么用的。其他构造函数的使用应该没有区别。但是从你的问题来看,你这边的问题还不清楚。
另外:请注意,将文件移动到 /public 可能无法像您预期的那样在生产环境中工作。当您进行生产构建时,public 中的所有内容都打包到一个 .jar 文件中。
运行时上传的文件应移动到外部位置
我正在尝试更改图片的保存路径。 如果我调试,我会看到以下路径:
/tmp/playtemp4579361689183556686
我想我会用命令更改目录的路径:
file.renameTo(new File(path))
有人知道我怎样才能改变路径吗? 我哪里做错了?
完整代码如下。
public Result doUpload() {
Http.MultipartFormData<File> body = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart<File> picture = body.getFile("picture");
Path uploadPath = environment.rootPath().toPath();
final String uploadFolder = "/public/uploads/";
if (picture != null) {
String fileName = picture.getFilename();
String contentType = picture.getContentType();
File file = picture.getFile();
String path = uploadPath + uploadFolder + fileName;
Logger.info("path: {}", uploadPath);
Logger.info("whole path: {}", path);
file.renameTo(new File(path));
return ok("File uploaded");
} else {
flash("error", "Missing file");
return badRequest();
}
}
/tmp
(在适用的 OS 上)的使用是一种兼容性约定,因为它可由所有用户写入,而不仅仅是管理用户。
在我自己的上传项目中,我通常将文件复制到我想要的任何路径,然后删除临时文件:-
Files.copy(file.toPath(), Paths.get("/my/apps/file/store/path/", ("copy_" + name)), REPLACE_EXISTING)
Files.deleteIfExists(file.toPath)
renameTo 实际上应该做你想做的。
正如您在这个问题中看到的那样,我也在我的项目中使用它:
File movedFile = new File("/var/www/public/", "filename.jpg");
file.renameTo(movedFile);
我就是这么用的。其他构造函数的使用应该没有区别。但是从你的问题来看,你这边的问题还不清楚。
另外:请注意,将文件移动到 /public 可能无法像您预期的那样在生产环境中工作。当您进行生产构建时,public 中的所有内容都打包到一个 .jar 文件中。 运行时上传的文件应移动到外部位置