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)相关推荐

  1. Android Oss上传文件简单使用

    一.oos简介  阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务. 官网文档地址 :https://help.a ...

  2. Springboot通过SFTP上传文件到服务器

    流程是这样的: 前端选择文件上传-------->调用后台接口,后台连接服务器(Linux)--------->上传成功  前端无论是通过ajax,还是form表单直接提交都可以,这里暂时 ...

  3. 如何使用FTP上传文件(FTP文件传输)

    使用FTP上传文件 利用FTP和云服务器进行文件传输首先需要 云服务器配置好FTP环境后,您可以通过: 1.资源管理器 2.第三方软件 与服务器进行文件传输 与服务器进行文件传输时首先要确保服务器安全 ...

  4. 利用apache-commons-fileupload写jsp上传文件

    利用apache-commons-fileupload写jsp上传文件 需要下载fileupload和beanutils两个包,代码如下. <%@ page language="jav ...

  5. 利用iframe无刷新上传文件的坑

    利用iframe无刷新上传文件的坑 原文:利用iframe无刷新上传文件的坑 页面里经常要用到文件上传的功能,而且要求页面不刷新,先说一下原理:页面里放一个file控件和submit按钮,外面用for ...

  6. 利用PUT方式上传文件的方法研究

    虽然没有POST方法使用广泛,但是PUT方法却是向服务器上传文件最有效率的方法.POST上传文件时,我们通常需要将所有的信息组合成 multipart 传送过去,然后服务器再解码这些信息,解码过程则必 ...

  7. python flask上传文件_Python之利用Flask上传文件、Flask_RESTful

    Flask上传文件 回顾知识点form表单中,一旦涉及到上传文件就要就必须要有enctype属性,而且必须等于multipart/form-data.而且提交方式为'post',method = 'p ...

  8. 解决利用<input type=“file“>上传文件时,value拿到的是fakePath问题

    问题:上传文件之后,直接获取input.value是fakePath路径,因此不能通过此路径访问到文件 解决方案: 若不想修改系统配置,可利用js代码解决 oInputFile.onchange = ...

  9. 文件上传漏洞利用介绍

    目录 文件上传漏洞利用介绍 1.绕过js验证 2.绕过MIME-TYPE验证 3.绕过基于黑名单验证 基于文件后缀名验证介绍 基于文件后缀名验证方式的分类 基于黑名单验证代码分析 利用apache配置 ...

最新文章

  1. Java获取当前的系统时间
  2. java修改动态视频,直播视频app源码,动态修改cron
  3. 【转载】如何组建一支优秀的数据分析团队?
  4. MyEclipse使用总结——MyEclipse文件查找技巧
  5. JAVA实现链表面试题
  6. Windows10记事本和Visual Studio Code文件encoding的设置
  7. vue使用webPack打包发布后页面显示空白
  8. 搭建MyBatis框架
  9. java 调用 .net dll_c# – 如何从Java调用.NET dll
  10. 微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码 | 极客头条...
  11. windows下php mongodb 安装配置使用查询
  12. Xv6 编写用户程序
  13. android 刷机文件怎么打开,安卓手机怎么刷机
  14. 使用daemontools监控zookeeper,storm等进程
  15. DNW5.0 USB 不OK
  16. Oracle SQL计算周
  17. 样本均值的特征与分布
  18. 揭秘工业互联网的内涵、热点与难点!
  19. macbook proa1708_苹果a1708是哪一年的
  20. SIM卡的密码PIN与PUK密码PIN

热门文章

  1. bug-android之INSTALL_FAILED_NO_MATCHING_ABIS
  2. centos7使用记录
  3. 【JavsScript】webapp的优化整理
  4. table或者列表中超出的字用省略号代替的方法(支持IE6)
  5. POJ 1192 最优连通子集(树形DP)
  6. Physics-based Animation 相关
  7. 问题五十一:怎么用ray tracing画tear drop
  8. 问题三十六:ray tracing中的Inverse Mapping(1)——球面Inverse Mapping
  9. express学习 - (3)express 路由
  10. 正在等待继续编辑 - Python - 基础知识专题 - 配置文件与日志管理