Java调用post 上传文件带参提示文件为空
时间: 2023-11-18 13:02:10 浏览: 62
这种情况一般是因为在发送post请求时,没有正确设置文件上传的参数。
以下是一个示例代码,可以参考一下:
```java
public static void uploadFile(String url, File file, Map<String, String> params) throws Exception {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("User-Agent", "Mozilla/5.0");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("file", file, ContentType.DEFAULT_BINARY, file.getName());
if (params != null) {
for (Map.Entry<String, String> entry : params.entrySet()) {
builder.addTextBody(entry.getKey(), entry.getValue(), ContentType.TEXT_PLAIN.withCharset("UTF-8"));
}
}
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
CloseableHttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
System.out.println(EntityUtils.toString(responseEntity));
}
EntityUtils.consume(responseEntity);
response.close();
httpClient.close();
}
```
其中,`File file`是要上传的文件,`Map<String, String> params`是其他参数。需要注意的是,在添加文件参数时,要使用`addBinaryBody`方法,并指定文件名;在添加其他参数时,要使用`addTextBody`方法。如果还是出现文件为空的问题,可以检查一下`file`是否为null,或者确认文件路径是否正确。
阅读全文