Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用MultipartEntityBuilder上载文件_Java_File Upload_Apache Httpclient 4.x - Fatal编程技术网

Java 使用MultipartEntityBuilder上载文件

Java 使用MultipartEntityBuilder上载文件,java,file-upload,apache-httpclient-4.x,Java,File Upload,Apache Httpclient 4.x,我有一些现有的Java代码可以将文件(作为字节数组)上传到Box.net,最近我认为最好将代码升级到ApacheHttpClient 4.4。然而,事实证明,这比预期的要困难一些。以下是我的工作遗留代码: HttpPost postMethod = new HttpPost(url); MultipartEntity multipartEntity = new MultipartEntity(); for (NameValuePair parameter : parameters) {

我有一些现有的Java代码可以将文件(作为字节数组)上传到Box.net,最近我认为最好将代码升级到ApacheHttpClient 4.4。然而,事实证明,这比预期的要困难一些。以下是我的工作遗留代码:

HttpPost postMethod = new HttpPost(url);
MultipartEntity multipartEntity = new MultipartEntity();
for (NameValuePair parameter : parameters) {
    String parameterName = parameter.getName();
    String parameterValue = parameter.getValue();
    StringBody valueBody = new StringBody(parameterValue, ContentType.MULTIPART_FORM_DATA);                    
    multipartEntity.addPart(parameterName, valueBody);
}

Iterator iterator = byteArrayHashMap.keySet().iterator();
while (iterator.hasNext()) {
    String key = (String) iterator.next();
    byte[] byteArray = byteArrayHashMap.get(key);
    multipartEntity.addPart(key, new ByteArrayBody(byteArray, key));
}

postMethod.setEntity(multipartEntity);
以下是新代码:

HttpPost postMethod = new HttpPost(url);
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
for (NameValuePair parameter : parameters) {
    String parameterName = parameter.getName();
    String parameterValue = parameter.getValue();
    StringBody valueBody = new StringBody(parameterValue, ContentType.MULTIPART_FORM_DATA);                    
    multipartEntityBuilder.addPart(parameterName, valueBody);
}

Iterator iterator = byteArrayHashMap.keySet().iterator();
while (iterator.hasNext()) {
    String key = (String) iterator.next();
    byte[] byteArray = byteArrayHashMap.get(key);
    multipartEntityBuilder.addBinaryBody(key, byteArray);
}

postMethod.setEntity(multipartEntityBuilder.build());

当我运行新代码时,服务器抱怨缺少参数。我是否正确使用MultipartEntityBuilder?

如果有人偶然发现这个问题,我可以通过更新addBinaryBody调用来解决这个问题,将ContentType设置为如下:MultipartEntityBuilder.addBinaryBody(key,byteArray,ContentType.DEFAULT\u BINARY,key)

如果有人偶然发现这个问题,我可以通过更新addBinaryBody调用来解决这个问题,将ContentType设置为:multipartEntityBuilder.addBinaryBody(key,byteArray,ContentType.DEFAULT\u BINARY,key);