/**
* @return
* @throws IOException
*/
public String upload(MultipartFile mFile, String param) throws IOException {
// 这里是MultipartFile转File的过程
File file = new File(Objects.requireNonNull(mFile.getOriginalFilename()));
FileUtils.copyInputStreamToFile(mFile.getInputStream(), file);
// url接口路径
String url = "http://localhost:8080/upload";
// file是要上传的文件 File() 这边我上传的是excel,其他类型可以自己改这个parse
//这边是把file写进来,也有写路径的,但我这边是写file文件,
// parse不行的话可以直接改这个"multipart/form-data"
RequestBody fileBody = RequestBody.create(MediaType.parse("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"), file);
// 创建OkHttpClient实例,设置超时时间
OkHttpClient okHttpClient =
new OkHttpClient.Builder().connectTimeout(60L, TimeUnit.SECONDS).writeTimeout(60L, TimeUnit.SECONDS).readTimeout(60L,
TimeUnit.SECONDS).build();
// 不仅可以支持传文件,还可以在传文件的同时,传参数
MultipartBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM) // 设置传参为form-data格式
.addFormDataPart("param", param).addFormDataPart("file", file.getName(), fileBody) // 中间参数为文件名
.build();
// 构建request请求体,有需要传请求头自己加
// //请求头
// Map<String, String> headers = new HashMap<>();
// headers.put(key, uri.getBusinessId());
// Request request = new Request.Builder().url(url).post(requestBody).headers(Headers.of(headers)).build();
Request request = new Request.Builder().url(url).post(requestBody).build();
Response response = null;
String result = "";
try {
// 发送请求
response = okHttpClient.newCall(request).execute();
result = response.body().string();
log.info(url + "发送请求结果:" + result);
if (!response.isSuccessful()) {
log.info("请求失败");
return "请求失败";
}
response.body().close();
} catch (IOException e) {
log.error(e.getMessage());
}
// 会在本地产生临时文件,用完后需要删除
if (file.exists()) {
file.delete();
}
return result;
}
调用第三方服务 传递文件写法
于 2024-07-22 12:01:01 首次发布