我正在使用Apache的HttpPost。我正在尝试将文件上传到Web服务器,结果如下:
POST网站/上传?uploadType = chunked& requestId = {requestId} HTTP / 1.1
主机:
接受:application / xml
的authToken:
请求参数
requestId当前上传会话的唯一标识符。
请求标题
主机Web服务器的主机名。
接受响应的格式。有效值为:application / xml或application / json。
Authtoken成功登录后收到的身份验证令牌。
FileEOF指定是否已使用当前文件块到达文件末尾。允许的值为0和1.文件结束表示值1.
请求正文
以字节为单位包含文件块的内容。
我得出的是:
HttpPost post = new HttpPost(url);
post.setHeader("Authtoken", params.get("token"));
String fileName = file.getName();
long offset = Long.parseLong(chunkOffset);
//...
post.setHeader("FileEOF", eof);
/*List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("requestId", requestId));
post.setEntity(new UrlEncodedFormEntity(postParameters));*/
fileInputStream.skip(offset);
fileInputStream.read(bytes);
post.setEntity(new ByteArrayEntity(bytes));
我在哪里写HttpPost的参数?
答案 0 :(得分:1)
处理文件上传时,您必须使用MultipartEntity
和FileBody
。
示例:
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("someparameter1", new StringBody("Woody"));
entity.addPart("someparameter2", new StringBody("Woodpecker"));
File fileToSend = new File(filePath);
FileBody fileBody = new FileBody(fileToSend, "application/octet-stream");
entity.addPart("upload_file", fileBody);
httpPost.setEntity(entity);
使用MultipartEntityBuilder
- 尝试以下操作:
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
final File aFile = new File(fileName);
FileBody fileBody = new FileBody(file);
builder.addPart("file", fileBody);
builder.addTextBody("requestId", requestId);
final HttpEntity httpEntity = builder.build();