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实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ...
随机推荐
- 从身份证管理系统思考企业CMDB的建设
关注嘉为科技,获取运维新知 对大部分中大型的企业来说,CMDB建设对于整个IT服务和IT运维管理的重要性不言而喻,但是目前仍然有非常多的企业无法建设好CMDB. 我最近刚好接触了一个公安系统的朋友,他 ...
- vim搜索及高亮取消
1. 命令模式下,输入:/字符串 比如搜索user, 输入/user 按下回车之后,可以看到vim已经把光标移动到该字符处和高亮了匹配的字符串 2. 查看下一个匹配,按下n(小写n) 3. 跳转到上一 ...
- [LeetCode] 26. Remove Duplicates from Sorted Array ☆(从有序数组中删除重复项)
[LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项 描述 Given a sorted array nums, remove the d ...
- CentOS 中安装和卸载 Emacs
日志更新记录: [1] 增加 CentOS7.2 (内核版本:3.10.0-514.16.1.el7.x86_64)下Emacs25.2 的安装过程,它与本文的步骤完全一样. Emacs 版本:htt ...
- Code Reading: ORB-SLAM回环检测源码阅读+注释
之前研究过一些回环检测的内容,首先要看的自然是用词袋回环的鼻祖和正当继承人(没有冒犯VINS和LDSO的意思)ORB-SLAM.下面是我的代码注释.因为代码都是自己手打的,不是在源码上注释的,所以一些 ...
- loj.ac:#10024. 「一本通 1.3 练习 3」质数方阵
CSDN的博客 友键 题目描述 质数方阵是一个\(5×5\)的方阵,每行.每列.两条对角线上的数字可以看作是五位的素数.方格中的行按照从左到右的顺序组成一个素数,而列按照从上到下的顺序.两条对角线也是 ...
- Python中对字符串的操作
Python字符串的相关操作 1.字符串格式判断 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.isl ...
- 生成不同尺寸dimen的xml文件以及文件夹
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...
- 小白的首个maven web项目Step1软件安装三(8.0.15mysql及workbench安装)
直接先开始下 MySQL 和 Workbench(mysql的可视化工具) ,注意下得是镜像版 .msi 后缀的 (mysql是纯控制面板的呈现方式,想要界面化操作可以装可视化工具,这里我装的是wor ...
- python之路-格式化输出、编码
格式化输出 user = input('Username:') pwd = input('Password:') msg = 'your username:%s,your password:%d,10 ...