如何使用Java上传多部分/表单数据中的文件?

时间:2017-05-29 14:04:38

标签: java multipartform-data multipart form-data

我正在尝试在Java中上传内容类型为Multipart/form-data的文件。我收到了InputStream格式的文件,因此我需要将此InputStream内容上传到目标位置。

我使用带有Multipart/form data参数的Postman成功上传了此文件。但我无法用Java做到这一点。我尝试使用OK HTTP。我不知道如何将文件内容放在表单数据中。如果我按原样使用下面的代码,则上传文件但数据为空。

我从Postman复制了这段代码:

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
RequestBody body = RequestBody.create(mediaType, "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; filename=\"Bot.txt\"\r\nContent-Type: text/plain\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--");
Request request = new Request.Builder()
      .url("https://test.atlassian.net/rest/api/2/issue/JIR-1/attachments")
      .post(body)
      .addHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
      .addHeader("authorization", "Basic abcdefg")
      .addHeader("x-atlassian-token", "nocheck")
      .addHeader("cache-control", "no-cache")
      .addHeader("postman-token", "a039d7b4-6d95-98a7-d4ac-606606b9c121")
      .build();

Response response = client.newCall(request).execute();

0 个答案:

没有答案