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.tutorial06键盘和鼠标
1.这个图是用 Excel画的 简单示意图(单元格边框,视图-->网格线) 1.1.中间的 正立方体 处于 X/Y/Z轴的中心,边长为2 ZC:代码中 原版是 人物在 (0,0,5)处,水平夹角 ...
- python 学习笔记 2 ----> dive into python 3
Python Shell idle的使用 >>> >>>help() ----> help> 可以在help这个工具中查找Python内置函数的文档等等 ...
- hdoj3251
这题告诉我们,最小割需:满流,S断不能到T端P4126,hdoj3987 #include <iostream> #include <cstdio> #include < ...
- flutter -------- GridView的使用
使用GridView将widget放置为二维列表. GridView提供了两个预制list,或者您可以构建自定义网格.当GridView检测到其内容太长而不适合渲染框时,它会自动滚动. GridVie ...
- Java+selenium+feeder+AutoIt+自动加载插件
package dataproject.datapro; import static org.testng.Assert.assertEqualsNoOrder; import java.io.Fil ...
- 远程桌面控制winsever,复制文件或者文件夹夹时出错提示“未指定的错误” 二(如何让远程电脑识别U盘)
一.背景: 要给远程服务器安装数据库,把安装复制到服务器,出现复制文件或者文件夹夹时出错提示“未指定的错误”:通过映射网络分享文件方法来解决,发现服务器访问网络出现错误,ping分享文件电脑的IP ...
- Octopus501工作站环境配置
操作系统 Ubuntu18.04LTS(Ubuntu16.04) 远程桌面 Xtce4桌面系统(mate桌面系统)+vncserver远程桌面服务器 远程ssh连接登录 ssh服务器 文件系统 vsF ...
- java8实战一------解决冗杂,java8真的很便利(抛砖)
你的代码很容易因为需求而变化,对自己代码改来改去的你一定会觉得烦的.在我看来,java8很容易的解决了这个问题. 先来看看例子!在一堆苹果里,筛选绿色的苹果.当然,Apple类是这样子. class ...
- python网络爬虫&&爬取图片
爬取学院官网数据from urllib.request import * #导入所有request urllib文件夹,request只是里面的一个模块from lxml import etree # ...
- 本地计算机上的 postgresql 服务启动后停止解决方法
在启动 postgresql 服务是遇到这种情况: 解决方法: 打开计算机管理====>查看应用程序日志信息,可以看出,由于日志配置错误的问题. 找到 postgresql.conf 文件,做如 ...