【问题标题】:Custom MimeType file won't upload using HttpComponent自定义 MimeType 文件不会使用 HttpComponent 上传
【发布时间】:2014-11-02 21:00:36
【问题描述】:

好的,我正在尝试使用 Java/Apache-HttpComponents 将音频文件上传到服务器。服务器期望该文件的 MimeType 为“audio/wav”。这是我正在尝试的:

        File file = new File("testfile2.wav");

        HttpPost httpPost = new HttpPost(uploadURL);
        HttpResponse httpResponse;
        String htmlResponse = "";

        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

        FileBody fileBody = new FileBody(file, ContentType.create("audio/wav"));

        builder.addPart("mediaListForm.mediaForms[0].description", new StringBody("RBT Name", ContentType.TEXT_PLAIN));
        builder.addPart("mediaListForm.mediaForms[0].artistId", new StringBody("2649", ContentType.TEXT_PLAIN));
        builder.addPart("mediaListForm.mediaForms[0].categoryId", new StringBody("2", ContentType.TEXT_PLAIN));
        builder.addPart("mediaListForm.mediaForms[0].file;", fileBody);


        httpPost.setEntity(builder.build());

如果我没有指定 MimeType,那么默认 MimeType 将作为“application/octet-stream”发送,服务器拒绝我的请求。如果我像上面new FileBody(file, ContentType.create("audio/wav")); 那样指定mime 类型,那么服务器会说Invalid value for field mediaListForm.mediaForms[0].file。我尝试调试和探索请求对象,如下所示:

------WebKitFormBoundaryqQFxF4y3FTYY3pEf
Content-Disposition: form-data; name="mediaListForm.mediaForms[0].file";
Content-Type: audio/wav

我的请求中缺少文件名,有什么建议吗?

【问题讨论】:

    标签: java http uploading


    【解决方案1】:

    不确定为什么下面的方法不起作用:

    builder.addPart("mediaListForm.mediaForms[0].file", fileBody);
    //If filebody contains custom contentType it does not work otherwise file is uploaded but server rejects it because of invalid contentType
    

    现在有多种方法可以将文件添加到我们的实体,一些方法需要 FileInputStream 一些需要 File,使用服务器预期的方法,例如我尝试 FileInputStream 它服务器抛出异常,我发现我必须发送 File 代替,所以这种方法很有效。

    builder.addBinaryBody("mediaListForm.mediaForms[0].file", file, ContentType.create("audio/wav"), rbt.getFullPath());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      相关资源
      最近更新 更多