0

次のコードを実行する Java HttpClient があります。

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://exampleutl.com/upload/");

File file = new File("C:/src_path/binary.doc");

MultipartEntityBuilder builder = MultipartEntityBuilder.create();

builder.setMode(HttpMultipartMode.STRICT);

FileBody fileBody = new FileBody(file); //image should be a String
builder.addPart("file", fileBody);
post.setEntity(builder.build());

client.execute(post);

/upload/ パスにマップされたサーバー メソッドがどのように見えるべきかわかりません。

このファイル アップロード リクエストを受け入れるサーバーは Spring 4.0 です。このようなもの:

@RequestMapping(method = RequestMethod.POST, value = "/upload/")
public @ResponseBody String saveUpload(UploadDto dto) throws IOException,ServletException {
    File file = new File("C:/dest_path/" + dto.getFile().getOriginalFilename());
    FileUtils.writeByteArrayToFile(file, dto.getFile().getBytes());
    return "success";
}

上記のサーバー メソッドは client.execute() によって呼び出されますが、UploadDto は空です。UploadDto は次のとおりです。

public class UploadDto {
    private MultipartFile file;

    public MultipartFile getFile() {
        return file;
    }

    public void setFile(MultipartFile file) {
        this.file = file;
    }
}

どんな援助でも大歓迎です!

4

2 に答える 2

1

MultipartResolverSpring サーブレット コンテキストから Beanが欠落しているようです。何かのようなもの

@Bean
public MultipartResolver multipartResolver() {
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    return multipartResolver;
}

にリクエストを送信しています

HttpPost post = new HttpPost("http://exampleutl.com/upload/");

コンテキスト パスが ROOT であると仮定します。空の場合、ハンドラー メソッドは にマップする必要があります/upload

@RequestMapping(method = RequestMethod.POST, value = "/upload")
于 2014-04-24T22:36:40.790 に答える