我正在构建一个应用程序流程,其中客户端将文件上传到 RESTful Web 服务,该服务将文件保存到默认的预定义位置。
REST 资源的 Java 代码:
@Path("/file")
public class UploadFile {
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
String uploadedFileLocation = "D:/uploaded/" + fileDetail.getFileName();
// save
writeToFile(uploadedInputStream, uploadedFileLocation);
// ...
}
}
客户端的代码是:
<form action="http://localhost:8080/file/upload" method="post" enctype="multipart/form-data">
<p>Select a file : <input type="file" name="file" size="50" /></p>
<input type="submit" value="Upload" />
</form>
这对我来说效果很好,但现在我想对其进行编码,以便客户端可以决定文件的保存位置。如何将此位置从客户端传递到 REST 服务?为了接收参数,我们将使用 GET 方法,但在 REST 服务中调用 POST 方法,那么如何完成呢?
最佳答案
在您的表单
中添加另一个输入
以包含位置信息并作为额外的@FormDataParam
接收。
当然,请严格验证位置,否则会带来重大安全风险。我个人很想尝试搞乱 /etc/passwd
:)
关于java - REST Web Service 特定路径文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792344/