我正在使用HttpClient 4.3。3.我的任务是将文件上传到服务器上。以下是我的代码:
InputStream inputStream = new FileInputStream(new File("/path/to/file"));
byte[] data;
data = IOUtils.toByteArray(inputStream);
InputStreamBody inputStreamBody = new InputStreamBody(new ByteArrayInputStream(data),"file-name-on-ser");
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("file",inputStreamBody);
HttpPost httpPost = new HttpPost("file upload URL");
httpPost.setEntity(multipartEntity.build());
CloseableHttpResponse response = httpclient.execute(httpPost);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null)
{
System.out.println(line);
}
当我运行此代码时,它成功地连接到服务器。但响应的输出是
<html>
<head><title>411 Length Required</title></head>
<body bgcolor="white">
<center><h1>411 Length Required</h1></center>
<hr><center>server-name</center>
</body>
</html>
当我使用firebug进行调试时,我看到以下请求头。
响应头视图源
缓存控制无存储,无缓存
连接保持活力
日期2014年5月22日星期四08:58:02 GMT
保持活动超时=30
服务器*****
设置Cookie****路径=/
转移编码分块
请求Headersview源
接受text/html、application/xhtml、application/xml;q=0.9,/;q=0.8
接受编码gzip,放气
接受语言en-US, en; q=0.5
连接保持活力
饼干****
主人*****
参考https://**/shareupload/
用户代理Mozilla/5.0(Windows NT 6.1; rv: 29.0)Gecko/20100101 Firefox/29.0
从上传流请求报头
内容-长度12642
内容类型多部分/表单数据;边界=------------------------------------105143784893
我在堆栈溢出方面也看到过类似的问题。
1)411内容-所需长度
2)文件上传使用apache的http客户端库不工作
但我仍然无法找到解决问题的办法。是否需要在请求标头中设置内容长度和内容类型参数?
先谢谢你。
试试看:
InputStreamBody inputStreamBody = new InputStreamBody(new ByteArrayInputStream(data),"file-name-on-ser"){
@Override
public long getContentLength(){return data.length();}
};
我试图使用Android Apache HttpClient做一个POST,但它返回错误411内容长度必需。这是代码。 我已经尝试添加行:- 但我得到了一个“组织”。阿帕奇。http。ProtocolException:内容长度标头已出现“错误”。这必须意味着HttpClient已经在发送内容长度。不幸的是,我无法访问服务器端。知道为什么会返回这些错误吗?
问题内容: 我尝试将数据上传到服务器,我的数据包含多张图片和大图片,在此之前,我尝试使用将图片转换为字符串,并使用之前发送过的其他数据和图片,但是我在这里遇到问题,因此,我阅读了其中一种必须尝试使用的解决方案。我仍然感到困惑,不知道如何使用它,有没有人可以帮助我使用该方法呢?这是我的代码: 有没有人可以帮助我教导和告诉我如何使用MultiPartEntityBuilder发送JSON和图像?
问题内容: 我正在使用此代码上传文件(图像到文件夹) 当文件(图像)保存在指定路径时…如果我想用某个所需的名称保存文件…。 我曾尝试更换此 有了这个 但是它不起作用 问题答案: 你可以试试看
今天我想把我的一个项目从我的开发环境转移到我的生产环境。 当我试图通过FTP上传它时,我已经看到几乎110k文件正在更新。 有人能告诉我这是否真的是必需的,或者我是否错过了一些编译功能等来启动和运行它吗? 干杯,费边
我有一个HTML表单,里面有一个文件上传。我正试图使用通过表单上传Word文档,但它不起作用。 表单有几个文本输入和2个文件上传行。如果我使用方法并将这些字段设置为空Strings,则文本字段将正确提交。因为我需要上传文件,所以我改成了,甚至不能让基本的测试再次工作。 工作守则 正在尝试MultipartEntityBuilder 该表单由Oracle托管并返回错误: 发生意外错误:ORA-065
问题内容: 看来我还没有清楚地传达出我的问题。我需要发送一个文件(使用AJAX),并且需要使用Nginx HttpUploadProgressModule 获取文件的上传进度。我需要一个很好的解决方案。我已经尝试过使用jquery.uploadprogress插件,但是我发现自己不得不重写其中的大部分内容,以使其在所有浏览器中都能正常工作并使用AJAX发送文件。 我所需要的只是执行此操作的代码,它