rest service下载文件与上传
文件下载:
@GET
@Path("/fileGet")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getFile(@QueryParam("fileName") String fileName) {
String filepath = configs.getProperty("filePath");
String totalFile = filepath + File.separator + fileName;
logger.info("准备下载文件:" + totalFile);
File file = new File(totalFile);
long fileLength = file.length();
ResponseBuilder responseBuilder = Response.ok(file,
MediaType.APPLICATION_OCTET_STREAM);
responseBuilder.type("application/x-msdownload");
Response response = null;
try {
responseBuilder
.header("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(getFileName(fileName), "UTF-8"));
responseBuilder.header("Content-Length", Long.toString(fileLength));
response = responseBuilder.build();
return response;
} catch (UnsupportedEncodingException e) {
logger.error("设置header失败:" + fileName);
e.printStackTrace();
}
return null;
}
上传:
@Path("/uploadData")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@POST
@Produces(MediaType.TEXT_PLAIN)
public String uploadData(@Context HttpServletRequest request,
@Context HttpServletResponse response) {
System.out.println("nihao");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
String msg = "上传失败!";
Boolean flag = false;
Map<String, String> map = new HashMap<String, String>();
String fileName = "";
String fileFormat = "";
String saveFilePath = "";
String fileNewName = "";
String attId = "";
String fieldNameId = "";
if (isMultipart) {
// 构造一个文件上传处理对象
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8"); // 支持中文文件名
List list = new ArrayList<FileItem>();
try {
// 解析表单中提交的所有文件内容
list = upload.parseRequest(request);
for (int i = 0; i < list.size(); i++) {
FileItem item = (FileItem) list.get(i);
if (item.isFormField()) { // 普通表单值
map.put(item.getFieldName(), item.getString("UTF-8"));
} else {
String name = item.getName(); // 获得上传的文件名(IE上是文件全路径,火狐等浏览器仅文件名)
fieldNameId = item.getFieldName();
fileName = name.substring(name.lastIndexOf('\\') + 1,
name.length());
/*fileFormat = fileName.substring(fileName
.lastIndexOf(".")); // 文件扩展名
*/ String uuidStr = UUID.randomUUID().toString();
fileNewName = uuidStr + fileFormat;
logger.info("");
flag = upload4Stream(fileNewName, "/root/qbtapp",
item.getInputStream()); // 上传文件
if (flag) {
msg = "上传成功!";
}
}
}
} catch (Exception e) {
}
return null;
}
return null;
}
private boolean upload4Stream(String fileName, String filePath,
InputStream inStream) {
boolean result = false;
if ((filePath == null) || (filePath.trim().length() == 0)) {
return result;
}
OutputStream outStream = null;
try {
String wholeFilePath = filePath + "\\" + fileName;
System.out.println(wholeFilePath);
File dir = new File(filePath);
if (!dir.exists()) {
dir.mkdirs();
}
File outputFile = new File(wholeFilePath);
boolean isFileExist = outputFile.exists();
boolean canUpload = true;
if (isFileExist) {
canUpload = outputFile.delete();
}
if (canUpload) {
int available = 0;
outStream = new BufferedOutputStream(new FileOutputStream(
outputFile), 2048);
byte[] buffer = new byte[2048];
while ((available = inStream.read(buffer)) > 0) {
if (available < 2048)
outStream.write(buffer, 0, available);
else {
outStream.write(buffer, 0, 2048);
}
}
result = true;
}
} catch (Exception e) {
e.printStackTrace();
try {
if (inStream != null) {
inStream.close();
}
if (outStream != null)
outStream.close();
} catch (Exception ex) {
e.printStackTrace();
}
} finally {
try {
if (inStream != null) {
inStream.close();
}
if (outStream != null)
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println(result);
return result;
}
rest service下载文件与上传的更多相关文章
- ssh 下载文件以及上传文件到服务器
https://blog.csdn.net/jackghq/article/details/64124062 scp john@192.168.1.100:~/Desktop/MHN_error_so ...
- asp.net core 下载文件,上传excel文件
下载文件: 代码: 后端代码: public IActionResult DownloadFile() { var FilePath = @"./files/deparment.xlsx&q ...
- MVC中的下载文件及上传
前言:最近做的项目中用到了文件下载与上传,一下子想不起来,只能进行百度,为了方便自己做了一个小demo,特此写了这篇小笔记 1.页面方面: 2.控制器方面 namespace MvcUpload.Co ...
- cURL 学习笔记与总结(4)使用 cURL 从 ftp 上下载文件与上传文件到 ftp
下载: <?php $curlobj = curl_init(); curl_setopt($curlobj, CURLOPT_URL, "ftp://192.***.*.***/文件 ...
- struts—文件的上传和下载
设计了一个小的案例:上传图片到服务器,上传成功后显示图片列表,然后点击下载上传到服务器的图片. 注意表单的配置属性: <form enctype="multipart/Form-dat ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- SocketIo+SpringMvc实现文件的上传下载
SocketIo+SpringMvc实现文件的上传下载 socketIo不仅可以用来做聊天工具,也可以实现局域网(当然你如果有外网也可用外网)内实现文件的上传和下载,下面是代码的效果演示: GIT地址 ...
- web操作文件的上传到服务器 并可下载 并且读取出来
1.文件的上传-servlet实现文件上传---核心API—DiskFileItemFactory 一.文件上传概述 l 实现web开发中的文件上传功能,需完成如下二步操作: • 在web页面 ...
- Struts2实现文件的上传与动态下载功能。
本篇主要使用Struts2实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ...
随机推荐
- OpenGL.教程
5.第五课:带纹理的立方体.html(http://www.opengl-tutorial.org/cn/beginners-tutorials/tutorial-5-a-textured-cube/ ...
- Java 占位符
Java的占位符有两种:% 和 {} String 类对象 只能使用 % 有效. MessageFormat 类对象 只能使用 {} 有效. package demo; import java.tex ...
- linux下查看进程id时用到的命令
一.查看端口占用的进程 . lsof -i:端口号, 查看某一端口的占用情况 [root@localhost bin]# lsof -i: COMMAND PID USER FD TYPE DEVIC ...
- 2018-2019-2 20175317 实验二《Java面向对象程序设计》实验报告
2018-2019-2 20175317 实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 面向对象程序设计-1 参考 http://www.cnblogs.com/roce ...
- oracle 12 c 创建表空间,用户名,及表
-----------------------------------------12C start------------------------------------------- -- 创 ...
- 网页中嵌入google地图
一丶前言 大致需求:美国地图中标记分布的仓库图钉(鼠标经过显示地址详情),通过输入寄收件地邮编来在地图上定位位置添加图钉,将寄件地,选择的仓库,收件地图钉折线相连接,表示大致路线. 一丶google开 ...
- 关于git的诞生
看了某某大佬的Git教程,简单易懂的同时,也让我对Git有了进一步的了解.搞半天,我们顶礼膜拜的分布式版本控制系统Git,是在这样的情况下产生的. linus在创建开源的linux系统的时候,并不是他 ...
- 跟踪mqttv3源码(二)
对于spring-mqtt.xml中的标签: <int-mqtt:message-driven-channel-adapter> <int-mqtt:outbound-channel ...
- vscode 中 eslint 相关配置
1.设置vue等文件有eslint提示 "eslint.validate": [ "javascript", "javascriptreact&quo ...
- 笔记《JavaScript 权威指南》(第6版) 分条知识点概要3—表达式和运算符
[表达式和运算符]原始表达式,初始化表达式(对象和数组的),函数定义表达式,属性访问表达式,调用表达式,对象创建表达式,运算符概述,算术表达式,关系表达式,逻辑表达式,赋值表达式,表达式计算,其他运算 ...