Rest上传文件(利用jersey)
Rest 提交文件
1. 前提是依赖和web.xml中jersey的servlet都配置好了
2. maven依赖库的冲突
<dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-servlet</artifactId><version>1.19</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId><version>1.19</version></dependency><dependency><groupId>com.sun.jersey.contribs</groupId><artifactId>jersey-multipart</artifactId><version>1.7</version></dependency>
加上上述依赖的话会报错,要去掉。
3. 上传和下载的代码的一个例子
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.activation.MimetypesFileTypeMap;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
@Path("/files")
public class FileResource {
private static final String filepath = "E:/circulation-checking-rest/src/resources/download/test1.uml";
private static final String serverLocation = "E:/circulation-checking-rest/src/resources/upload/";
@GET
@Path("download")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response downloadFile() {File file = new File(filepath);if (file.isFile() && file.exists()) {String mt = new MimetypesFileTypeMap().getContentType(file);String fileName = file.getName();return Response.ok(file, mt).header("Content-disposition","attachment;filename=" + fileName).header("ragma", "No-cache").header("Cache-Control", "no-cache").build();} else {return Response.status(Response.Status.NOT_FOUND).entity("下载失败,未找到该文件").build();}
}@POST@Path("upload")@Consumes(MediaType.MULTIPART_FORM_DATA)@Produces("application/json")public Response uploadFile(@FormDataParam("file") InputStream fileInputStream,@FormDataParam("file") FormDataContentDisposition contentDispositionHeader) throws IOException {String fileName = contentDispositionHeader.getFileName();String t=contentDispositionHeader.getName();System.out.println(fileName+" "+t);File file = new File(serverLocation + "a.uml"); File parent = file.getParentFile(); //判断目录是否存在,不在创建 if(parent!=null&&!parent.exists()){ parent.mkdirs(); } file.createNewFile(); OutputStream outpuStream = new FileOutputStream(file);int read = 0;byte[] bytes = new byte[1024];while ((read = fileInputStream.read(bytes)) != -1) {outpuStream.write(bytes, 0, read);}outpuStream.flush();outpuStream.close();fileInputStream.close();return Response.status(Response.Status.OK).entity("Upload Success!").build();}
}
4. 上传文件和下载文件的JSP页面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p><a href="http://localhost:8080/circulation-checking-rest/test/files/download">Download</a>
<h3>Upload a File</h3>
<form action="http://localhost:8080/circulation-checking-rest/test/files/upload" method="post" enctype="multipart/form-data">
<p>Select a file : <input type="file" name="file" /></p>
<input type="submit" value="Upload It" style="color: Fuchsia; "/>
</form>
</body>
</html>
5. 效果
上传和下载页面
点击下载
上传文件,问价名解析错误
@FormDataParam("file") InputStream fileInputStream,@FormDataParam("file") FormDataContentDisposition contentDispositionHeaderString fileName = contentDispositionHeader.getFileName();String t=contentDispositionHeader.getName();System.out.println(fileName+" "+t);
FormDataContentDisposition 这个类在解析文件的地址时,出问题了,路径中的斜杠没了。
Rest上传文件(利用jersey)相关推荐
- Android Oss上传文件简单使用
一.oos简介 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务. 官网文档地址 :https://help.a ...
- Springboot通过SFTP上传文件到服务器
流程是这样的: 前端选择文件上传-------->调用后台接口,后台连接服务器(Linux)--------->上传成功 前端无论是通过ajax,还是form表单直接提交都可以,这里暂时 ...
- 如何使用FTP上传文件(FTP文件传输)
使用FTP上传文件 利用FTP和云服务器进行文件传输首先需要 云服务器配置好FTP环境后,您可以通过: 1.资源管理器 2.第三方软件 与服务器进行文件传输 与服务器进行文件传输时首先要确保服务器安全 ...
- 利用apache-commons-fileupload写jsp上传文件
利用apache-commons-fileupload写jsp上传文件 需要下载fileupload和beanutils两个包,代码如下. <%@ page language="jav ...
- 利用iframe无刷新上传文件的坑
利用iframe无刷新上传文件的坑 原文:利用iframe无刷新上传文件的坑 页面里经常要用到文件上传的功能,而且要求页面不刷新,先说一下原理:页面里放一个file控件和submit按钮,外面用for ...
- 利用PUT方式上传文件的方法研究
虽然没有POST方法使用广泛,但是PUT方法却是向服务器上传文件最有效率的方法.POST上传文件时,我们通常需要将所有的信息组合成 multipart 传送过去,然后服务器再解码这些信息,解码过程则必 ...
- python flask上传文件_Python之利用Flask上传文件、Flask_RESTful
Flask上传文件 回顾知识点form表单中,一旦涉及到上传文件就要就必须要有enctype属性,而且必须等于multipart/form-data.而且提交方式为'post',method = 'p ...
- 解决利用<input type=“file“>上传文件时,value拿到的是fakePath问题
问题:上传文件之后,直接获取input.value是fakePath路径,因此不能通过此路径访问到文件 解决方案: 若不想修改系统配置,可利用js代码解决 oInputFile.onchange = ...
- 文件上传漏洞利用介绍
目录 文件上传漏洞利用介绍 1.绕过js验证 2.绕过MIME-TYPE验证 3.绕过基于黑名单验证 基于文件后缀名验证介绍 基于文件后缀名验证方式的分类 基于黑名单验证代码分析 利用apache配置 ...
最新文章
- Java获取当前的系统时间
- java修改动态视频,直播视频app源码,动态修改cron
- 【转载】如何组建一支优秀的数据分析团队?
- MyEclipse使用总结——MyEclipse文件查找技巧
- JAVA实现链表面试题
- Windows10记事本和Visual Studio Code文件encoding的设置
- vue使用webPack打包发布后页面显示空白
- 搭建MyBatis框架
- java 调用 .net dll_c# – 如何从Java调用.NET dll
- 微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码 | 极客头条...
- windows下php mongodb 安装配置使用查询
- Xv6 编写用户程序
- android 刷机文件怎么打开,安卓手机怎么刷机
- 使用daemontools监控zookeeper,storm等进程
- DNW5.0 USB 不OK
- Oracle SQL计算周
- 样本均值的特征与分布
- 揭秘工业互联网的内涵、热点与难点!
- macbook proa1708_苹果a1708是哪一年的
- SIM卡的密码PIN与PUK密码PIN
热门文章
- bug-android之INSTALL_FAILED_NO_MATCHING_ABIS
- centos7使用记录
- 【JavsScript】webapp的优化整理
- table或者列表中超出的字用省略号代替的方法(支持IE6)
- POJ 1192 最优连通子集(树形DP)
- Physics-based Animation 相关
- 问题五十一:怎么用ray tracing画tear drop
- 问题三十六:ray tracing中的Inverse Mapping(1)——球面Inverse Mapping
- express学习 - (3)express 路由
- 正在等待继续编辑 - Python - 基础知识专题 - 配置文件与日志管理