通过 java httpclient 模拟表单上传 PHP/5.3.3 上 empty($_FILES) 为空,通过 html 代码直接表单提交就是正常的。 PHP/5.4.40 也是可以的
httpclient4.5.2 模拟请求的代码:
InputStreamBody streamBody = new InputStreamBody(inputStream, contentType, fileData.getFilename());
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.addPart("file", streamBody);
for (String key : params.keySet()) {
multipartEntityBuilder.addPart(key, new StringBody((String) params.get(key), ContentType.TEXT_PLAIN));
}
HttpEntity entity = multipartEntityBuilder
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
.setContentType(MULTIPART_FORM_DATA_UTF8)
.setCharset(Consts.UTF_8).build();
httpPost.setEntity(entity);
HttpResponse response = HttpClientBuilder.create().build().execute( httpPost);
String resultStr = IOUtils.toString(response.getEntity().getContent());
php 中接收的:
if(!empty($_FILES)){
}
这里判断的的时候为空。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.