2016-03-21 11 views
2

私はangularjsアプリケーションをサーバーに配備し、アプリケーションを別のサーバーに配備しました。angularjsとスプリングブートを使用してファイルをアップロードする

私のangularjsアプリケーションファイルをアップロードし、残りのコントローラ経由で送信するフォームがあります。このコントローラは、このファイルをスプリングブートアプリケーションがデプロイされているサーバーのフォルダ内に保存します。

これは私の残りのコントローラです:fileUploadServiceを

$scope.validerOffre= function(){ 
    var file = $scope.fileUpload; 
    var uploadUrl = "/imageUpload"; 
    fileUploadService.uploadFileToUrl(file, uploadUrl); 
    }; 

このコントローラは、その後呼び出し::ファイルを送信

@CrossOrigin(origins="*") 
@RestController 
public class Upload { 

    @RequestMapping(value="/imageUpload", method = RequestMethod.POST) 
    public void UploadFile(MultipartHttpServletRequest request) throws IOException { 

     Iterator<String> itr=request.getFileNames(); 
     MultipartFile file=request.getFile(itr.next()); 
     String fileName=file.getOriginalFilename(); 
     File dir = new File("C:\\file"); 
     if (dir.isDirectory()) 
     { 
      File serverFile = new File(dir,fileName); 
      BufferedOutputStream stream = new BufferedOutputStream(
        new FileOutputStream(serverFile)); 
      stream.write(file.getBytes()); 
      stream.close(); 
     }else { 
      System.out.println("not"); 
     } 

    } 
} 

と、この私のangularjsコントローラ

capValueRecruitApp.service('fileUploadService', function ($http) { 
    this.uploadFileToUrl = function(file, uploadUrl){ 
    var fd = new FormData(); 
    fd.append('file', file); 
    $http.post('http://localhost:8080' + uploadUrl, fd, { 
     transformRequest: angular.identity, 
     headers: {'Content-Type': undefined} 
     }) 
     .success(function(){ 
     }) 
     .error(function(){ 
     }); 
    } 
}); 

とで

私のangularjsアプリケーション私はアップロードしたファイルを表示したいが、私はこのファイルは別のサーバーである春の起動アプリケーションサーバーにアップロードされているので、それはできません。

私の質問は、springjackアプリケーションがデプロイされているサーバーではなく、angularjsアプリケーションサーバーのフォルダにアップロードしたファイルを保存する方法です。

答えて

1

あなたは基本的に2つのソリューションがあります。

1:あなたは、ファイル名(またはより良いあなたのFileUploadコントローラによって返されたID)を取り、新しい@RequestMappingを作成し、そのファイルを返します。このような 何か:

@RequestMapping(value="/imageDownload", method = RequestMethod.POST) 
public void downloadFile(@RequestParam(value = "fileName", required = true) String fileName,HttpServletResponse response) throws IOException { 

    File dir = new File("C:\\file"); 
    File fileToDownload = new File(dir,fileName); 
    if (dir.isDirectory() && fileToDownload.exists()){ 
     //read fileToDownload and send stream to to response.getOutputStream(); 

    }else { 
     System.out.println("no such file "+ fileToDownload.toString()); 
     response.sendError(404); 
     return; 
    } 

} 

次に、あなたはhttp://localhost:8080/imageDownload?filename=yourUploadedFile.jpg

2を呼び出す:あなたのアップロードでファイルを保存すると、どこかにあなたのウェブサーバに直接アクセスを有する場合、それを保存します。

springjアプリケーションでangeljsファイルを提供している場合は、application.propertiesファイルのspring.resources.staticLocationsに新しいフォルダを追加できます。 (これを参照:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-static-content

関連する問題