String path = "picture/20220420/1.doc";//指定文件的路径 或相对路径
File file = new File(path);
System.out.println("文件名:"file.getName()+"=====文件绝对路径:"+file.getAbsolutePath());
InputStream fileInputStream = new FileInputStream(file);//获取文件流
HttpPost post = new HttpPost("http://***/demo/upload");
//创建多部分实体生成器 可实现多文件上传 用于添加上传数据
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setCharset(Charset.forName("uft-8"));//设置请求的编码格式
String fileName = file.getName();
//addBinaryBody:以二进制的形式添加数据,可以添加File、InputStream、byte[]类型的数据
builder.addBinaryBody("file", fileInputStream, ContentType.DEFAULT_BINARY,fileName);
//addTextBody:添加文本数据
builder.addTextBody("type", "doc");
//构建完毕后放进请求路径post中 作为参数
post.setEntity(builder.build());
//开启一个客户端 HTTP 请求
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
CloseableHttpClient client = httpClientBuilder.build();
//执行请求
HttpResponse httpResponse = client.execute(post);
//是否请求成功 根据状态码来判断
if(response.getStatusLine().getStatusCode()==200){
//这就是请求成功后 响应回来的数据
String s = EntityUtils.toString(httpResponse.getEntity();
return true;
}
return false;
同理可得,多文件上传的话:
1.只需多加几个addBinaryBody,需要注意的是该api中第一个参数不要重复
2.文件路径可以指向一个文件夹,然后获取里面所有文件进行遍历上传,循环里的操作同上1一样