#java #rest #jax-rs
#java #rest #jax-rs
Вопрос:
У меня есть служба RESTful, реализованная на Java для загрузки файлов. Вот код:
@POST
@Produces("text/plain")
public String uploadFile(@Context HttpServletRequest request) {
String resultStatus = "fileupload error";
String fileRepository = "/MobilityPatterns/";
if (ServletFileUpload.isMultipartContent(request)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(1073741824); //Limits the max file size (bytes)
List<FileItem> items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
String username = null;
for(FileItem item : items){
if(item.isFormField() amp;amp; item.getFieldName().equalsIgnoreCase("username")){
username = item.getString();
} else if (!item.isFormField() amp;amp; item.getSize() > 0) {
try {
String filename = item.getName();
String dateFormat = "yyyyMMdd_HHmmss";
Calendar cal = Calendar.getInstance();
SimpleDateFormat dateFormatter = new SimpleDateFormat(dateFormat);
String date = dateFormatter.format(cal.getTime());
item.write(new File(fileRepository username "_" date "_" filename));
resultStatus = "fileupload success";
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return resultStatus;
}
Но теперь я хочу реализовать сервис для загрузки этого файла. Могу ли я получить некоторую помощь о том, как это сделать?
Ответ №1:
Может быть, что-то вроде этого? Я никогда не использовал jax-rs, поэтому я не уверен, что мой код будет ВЫЧИСЛЯТЬСЯ!
@GET
@Produces("application/x-octet-stream")
public void downloadFile(@Context HttpServletRequest request,@Context HttpServletResponse response) {
//fetch the file id from request object
//get File using file id
//dump file contents to response
}