私はSpring MVCを使用する初心者です。私はソーシャルネットワークのAndroidアプリケーションを開発しています。ユーザーはニュースフィード内の投稿をアップロードすることができます。ディレクトリに画像を保存する - Spring MVC
ザ・各ポストは、添付の最大のもののイメージを持つことができますので、私は、サーバー上のイメージファイルを格納する必要があります。
私はすでにRestTemplateを使用して、アップロードプロセスの例を実装している:
FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
formHttpMessageConverter.setCharset(Charset.forName("UTF8"));
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(formHttpMessageConverter);
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("file", new FileSystemResource(path)); /* path - is the path of the
image i want to upload */
map.add("username","user1");
HttpHeaders imageHeaders = new HttpHeaders();
imageHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> imageEntity = new HttpEntity<>(map, imageHeaders);
restTemplate.exchange(messageURL, HttpMethod.POST, imageEntity, Boolean.class);
そして、Spring MVCの側に:
@RequestMapping(value = "/uploadPhoto/{id}", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> uploadPhoto(@RequestParam("file") MultipartFile srcFile,
@PathVariable("id") Integer id,
@RequestParam("username") String username)
{
System.out.println("Photo name = "+srcFile.getName());
System.out.println("Photo size = "+srcFile.getSize());
System.out.println("Photo original name = "+srcFile.getOriginalFilename());
System.out.println("Username = "+username);
String uploadsDir = "/uploads/";
String realPathtoUploads = context.getRealPath(uploadsDir);
if(! new File(realPathtoUploads).exists())
{
new File(realPathtoUploads).mkdir();
}
String orgName = srcFile.getOriginalFilename();
String filePath = realPathtoUploads + orgName;
File dest = new File(filePath);
try
{
srcFile.transferTo(dest);
}
catch (IllegalStateException | IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
このコードは動作しますが、私はから写真をアップロードすることができ、それを使用してサーバーへの電話のストレージ、しかし、問題は、アップロードされた写真のURLをデータベースに保存し、将来ダウンロードできるようにするためです。どうすればいいですか?
ものの代わりに、サーバー内の画像を保存する... Amazon S3のようなクラウド上のセキュアストレージ領域に格納する方が良いだろう – prashant