2016-07-19 14 views
3

Spring MVCで@PathVariableとしてファイルパスをGETリクエストでRESTサービスに渡すタスクがあります。Spring MVCでファイルパスを@PathVariableとして送信

JSONでファイルパスのPOST送信文字列を使用すると簡単に実行できます。

このようなGETリクエストと@Controllerでどうすればいいですか?

@RequestMapping(value = "/getFile", method = RequestMethod.GET) 
public File getFile(@PathVariable String path) { 
    // do something 
} 

/file/getFile/"/Users/user/someSourceFolder/8.jpeg」

Content-TypeのGET:あなたはあなたのコントローラを定義する必要があるアプリケーション/ JSON

+0

OMG ...私は疑問を持っています。あなたはファイルをアップロードしたいですか?またはファイルパスを送信したいですか? – Byeon0gam

+0

ファイルをダウンロードしたい - そのパスを送信する。私はGET要求でそれをやる必要があるいくつかの要件があります。 –

答えて

1

パターンを取得するために使用します。 get getパターンURL。

@RequestParamを使用してください。

@RequestMapping(value = "/getFile", method = RequestMethod.GET) 
public File getFile(@RequestParam("path") String path) { 
    // do something 
} 

@PathVariableを使用する場合。

@RequestMapping(value = "/getFile/{path}", method = RequestMethod.POST) 
public File getFile(@PathVariable String path) { 
    // do something 
} 
+0

パス変数が私のために働いていない、このパスでgetリクエストをどのように送信するのですか?スラッシュはいかがですか? @RequestParamはうまく動作します、ありがとうございます。 –

+0

@PathVariable send path:... /getFile/..Users/user/someSourceFolder/8.jpeg POSTリクエストを使用します。 – Byeon0gam

+0

GETリクエストが必要です。 @RequestParamを使用してください。 – Byeon0gam

3

をこのように:

@RequestMapping(value = "/getFile/{path:.+}", method = RequestMethod.GET) 
public File getFile(@PathVariable String path) { 
    // do something 
} 
+0

':+'を説明できますか? – ChiefTwoPencils

+1

この '。+'は正規表現のマッチです。あなたのパスの '.jpg'は切り捨てられません。 – Blank

+0

このようにパラメータを渡すことはできません。たとえば、私は/var/folders/gc/6403595805123870815.pdfファイルへのフルパスを持っています。私が{{URL}}/file/getFile/var/folders/gc/6403595805123870815.pdfのように渡しているときに機能しません。404が発生しました。 –

1

私がSpringでファイルをダウンロード/アップロードするための相対パスで動作したのは何ですか。

@RequestMapping(method = RequestMethod.GET, path = "/files/**") 
@NotNull 
public RepositoryFile get(@PathVariable final String repositoryId, 
     @PathVariable final String branchName, 
     @RequestParam final String authorEmail, 
     HttpServletRequest request) { 
    String filePath = extractFilePath(request); 
    .... 
} 

そして、私は、コントローラ内で作成utilitary機能:

private static String extractFilePath(HttpServletRequest request) { 
     String path = (String) request.getAttribute(
       HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); 
     String bestMatchPattern = (String) request.getAttribute(
       HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); 
     AntPathMatcher apm = new AntPathMatcher(); 
     return apm.extractPathWithinPattern(bestMatchPattern, path); 
    } 
関連する問題