2016-12-30 23 views
0

私は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をデータベースに保存し、将来ダウンロードできるようにするためです。どうすればいいですか?

答えて

0

あなたは、いくつかのリクエストパラメータに基づいてコントローラを書くことができ、固定URLはレスポンスオブジェクトに出力ストリームとして特定の画像を書き込み画像が含まれており、返すに行く.....設定項目は異なるだろう異なる画像......と固定URLとリクエストパラメータの組み合わせは、データベースに保存するURLになります。

+0

ものの代わりに、サーバー内の画像を保存する... Amazon S3のようなクラウド上のセキュアストレージ領域に格納する方が良いだろう – prashant

関連する問題