import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
/**
* * @date 2023/10/13
*/
public class DemoUtils {
@Resource
RestTemplate restTemplate;
//当前服务器文件所属路径
@Value("${sourceFile}")
private String sourceFile;
//指定服务器保存的路径
@Value("${targetFile}")
private String targetFile;
//指定服务器的地址
@Value("${service_url}")
private String service_url;
//本地服务器发送文件
@RequestMapping("/upload")
public String getUpload() {
// 将 本地文件 --> 字节数组 --> 字节数组资源
File file = new File(sourceFile);
byte[] bytesFile = null;
try {
bytesFile = FileUtils.readFileToByteArray(file);
} catch (IOException e) {
e.printStackTrace();
}
// 必须重写该方法,否则服务器MultipartRequest.getFile获取文件为空,
// 但是return的变量名 作SubmittedFileName(可自定义),并非做接收端按键
// 取值时的文件的键名
// 即上传的文件具有两个名字: 键名 和 提交的文件名SubmittedFileName
ByteArrayResource byteArrayResource = new ByteArrayResource(bytesFile) {
@Override
public String getFilename() {
return "xxxxx";
}
};
// httpRequest body
MultiValueMap<String, Object> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("file", byteArrayResource);
paramsMap.add("fileName", file.getName());
String url = service_url + "/receive";
String msg = restTemplate.postForObject(url, paramsMap, String.class);
return msg;
}
//接收文件的服务器接口
/**
* 以注解的形式获取请求中携带的参数
*
* @param file
* @param fileName
* @return
*/
@RequestMapping("/receive")
public String receive(@RequestParam("file") MultipartFile file,
@RequestParam("fileName") String fileName) {
String msg = null;
// 获取传递的参数
byte[] bytesFile = null;
try {
if (file == null) {
throw new RuntimeException("接收的文件为空!");
}
if (fileName == null) {
throw new RuntimeException("接收的文件名为空!");
}
bytesFile = file.getBytes();
} catch (Exception e) {
e.printStackTrace();
}
// 字节数组 --> 本地文件
String filePath = targetFile + fileName;
File receiveFile = new File(filePath);
try {
FileUtils.writeByteArrayToFile(receiveFile, bytesFile);
System.err.println("创建本地文件成功 -- 方式2");
msg = "succ";
} catch (Exception e) {
msg = "fail";
e.printStackTrace();
}
return msg;
}
}
从当前服务器读取文件并发送到指定服务器
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 客户也不知道怎么了,突然要我自己收集app的crash信息,然后发送到他的服务器,我就蛋疼了,毕竟crash的原因...
- 1、打开fiddler 按Ctrl+r 打开 fiddler script(或者通过菜单Rules 打开Custo...
- NET CORE读取Excel.xlsx单元格图片的场景,一般是批量导入业务数据,例如:药品的图片,医师资格证,商...
- 在实际项目中,遇到有客户机房断电导致数据库数据丢失的问题,又因为备份容灾不及时,导致部分数据恢复不了。使用Linu...
- 使用Http协议的Post方式提交Excel表格数据,首先测试分析Http协议数据接口,可以使用谷歌或火弧浏览器的...