@RequestMapping(value={"/uploadFile"},method = {RequestMethod.POST})
public RespEntity uploadFile(String ticket_id,
MultipartFile file) throws Exception {
String uuid = UUID.randomUUID().toString().replace("-", "");
String originalFilename = file.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
String fileName=uuid+extName;
//System.out.println(file[0].getOriginalFilename());
// 超级管理员邮箱
String adminemail = "xxxxxxx@qq.com";
// 鉴权token
String token = "xxxxxxx-xxxx-xxxx-xxxx-xxxxx";
// 10位时间戳
long timestamp10 = System.currentTimeMillis() / 1000L;
// 签名算法
@SuppressWarnings("deprecation")
String sign = DigestUtils.shaHex(adminemail + "&" + token + "&" + timestamp10);
// 创建客户 url
String url = "http://xxxx.xx.cn/xxxxx/xx/upload_file?email="
+ adminemail + "×tamp=" + timestamp10 + "&sign=" + sign+"&ticket_id="+ticket_id+"&file_name="+fileName;
log.info("创建客户 url= {}",url);
if(StringUtils.isBlank(url)) {
return RespEntity.error(RespCode.COMMON_PARAM_BLANK);
}
String result="";
try {
// 服务器的域名
URL url1 = new URL(url);
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
// 设置为POST情
conn.setRequestMethod("POST");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 设置请求头参数
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("Content-Type", "application/octet-stream");
OutputStream out = new DataOutputStream(conn.getOutputStream());
// 上传文件
StringBuilder sb = new StringBuilder();
// 将参数头的数据写入到输出流中
out.write(sb.toString().getBytes());
// 数据输入流,用于读取文件数据
DataInputStream in = new DataInputStream(file.getInputStream());
byte[] bufferOut = new byte[1024*20];
int bytes = 0;
// 每次读8KB数据,并且将文件数据写入到输出流中
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
in.close();
out.flush();
out.close();
// 定义BufferedReader输入流来读取URL的响应
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
result += line; //这里读取的是上边url对应的上传文件接口的返回值,读取出来后,然后接着返回到前端,实现接口中调用接口的方式
}
} catch (Exception e) {
System.out.println("发送POST请求出现异常!" + e);
e.printStackTrace();
}
System.out.println(result);
return RespEntity.success(result);
}
java 把文件变成流文件上传到后台接口
最新推荐文章于 2024-07-30 03:17:58 发布