代码如下:

CADLocalControlle.java
package com.xgt.controller;

import com.xgt.common.BaseController;
import com.xgt.common.PcsResult;
import com.xgt.service.bs.ExcelService;
import com.xgt.util.MD5Util;
import org.apache.commons.io.IOUtils;
import org.jboss.resteasy.plugins.providers.multipart.InputPart;
import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import javax.ws.rs.Consumes;
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.MultivaluedMap;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map; /**
* Created by Administrator on 2017/8/28.
* 上传Excel到本地
*/
@Controller
@Path("/cadlocal")
public class CADLocalController extends BaseController{
@Autowired
private ExcelService excelService; private final String UPLOADED_FILE_PATH = "e:\\upload\\";
@POST
@Path("/uploadLocalCAD")
@Consumes(MediaType.MULTIPART_FORM_DATA )
@Produces(MediaType.APPLICATION_JSON)
//@RequiresPermissions("picturelocal:uploadPicture")
public PcsResult uploadFile(MultipartFormDataInput input) {
String fileName = "";
Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
List<InputPart> inputParts = uploadForm.get("fileselect[]");
for (InputPart inputPart : inputParts) {
try {
MultivaluedMap<String, String> header = inputPart.getHeaders();
fileName = getFileName(header);
fileName = MD5Util.MD5(fileName+System.currentTimeMillis());
fileName = fileName+".dwg";
//convert the uploaded file to inputstream
InputStream inputStream = inputPart.getBody(InputStream.class,null);
byte [] bytes = IOUtils.toByteArray(inputStream);
//constructs upload file path
fileName = UPLOADED_FILE_PATH + fileName;
writeFile(bytes,fileName);
} catch (IOException e) {
e.printStackTrace();
}
}
return newResult(true); } private String getFileName(MultivaluedMap<String, String> header) {
String[] contentDisposition = header.getFirst("Content-Disposition").split(";");
for (String filename : contentDisposition) {
if ((filename.trim().startsWith("filename"))) {
String[] name = filename.split("=");
String finalFileName = name[1].trim().replaceAll("\"", "");
return finalFileName;
}
}
return "unknown";
} //save to somewhere
private void writeFile(byte[] content, String filename) throws IOException {
File file = new File(filename);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fop = new FileOutputStream(file);
fop.write(content);
fop.flush();
fop.close();
}
}

BaseController.java

package com.xgt.common;

import com.xgt.dao.entity.User;
import com.xgt.exception.EnumPcsServiceError;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Value; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.util.List; /**
* Base controller which contains common methods for other controllers.
*/
public class BaseController { @Value("${default.pageSize}")
private int defPageSize; @Value("${default.maxPageSize}")
private int defMaxPageSize; @Value("${aliyunOSS.accessKeyId}")
protected String accessKeyId; @Value("${aliyunOSS.accessKeySecret}")
protected String accessKeySecret; @Value("${aliyunOSS.uploadUrl}")
protected String endpoint; @Value("${aliyunOSS.bucketname}")
protected String bucketName; @Value("${aliyunOSS.imageAddress}")
protected String imageAddress; /**
* Generate new PcsResult object, default with "SUCCESS" code.
*
* @return PcsResult result.
*/
protected PcsResult newResult() {
PcsResult result = new PcsResult();
result.setCode(EnumPcsServiceError.SUCCESS.getCode()).setMessage(EnumPcsServiceError.SUCCESS.getDesc());
return result;
}
/**
* Generate new PcsResult object, default with "SUCCESS" code.
*
* @return PcsResult result.
*/
protected PcsResult newResult(Boolean success) {
PcsResult result = new PcsResult();
result.setSuccess(success);
result.setCode(EnumPcsServiceError.SUCCESS.getCode()).setMessage(EnumPcsServiceError.SUCCESS.getDesc()); return result;
} protected PcsResult failedResult(EnumPcsServiceError error) {
PcsResult result = new PcsResult();
result.setCode(error.getCode()).setMessage(error.getDesc());
return result;
} @SuppressWarnings("unused")
protected PcsResult validateFailedResult(Integer errorCode, String description) {
PcsResult result = new PcsResult();
result.setCode(errorCode).setMessage(description);
return result;
} @SuppressWarnings("unused")
protected PcsResult validateFailedResult(EnumPcsServiceError error) {
PcsResult result = new PcsResult();
result.setCode(error.getCode()).setMessage(error.getDesc());
return result;
} protected Integer getLoginUserId(){
User user = (User) SecurityUtils.getSubject().getPrincipal();
return user.getUserId();
} protected List<Integer> getDepartmentUserIdList(){
User user = (User) SecurityUtils.getSubject().getPrincipal();
return user.getDepartmentUserIdList();
} /**
* 构建 分页 页数
* @param page 页
* @return int
*/
protected int getCurPage(Integer page) {
if (page==null || page<1) {
return 1;
}
return page;
}
/**
* 构建 分页 每页显示条数
* @param pageSize 每页显示条数
* @return int
*/
protected int getPageSize(Integer pageSize) {
if (pageSize==null || pageSize<1) {
return defPageSize;
}
if (pageSize>defMaxPageSize) {
return defMaxPageSize;
}
return pageSize;
} }

补充说明:

for (InputPart inputPart : inputParts) {}用于获得接收到的文件,可以接收多文件
fileName = MD5Util.MD5(fileName+System.currentTimeMillis());这里把文件名用MD5算法加密,不是为了加密,而是我在流中获取的中文文件名乱码,还没想好解决方案
fileName = fileName+".dwg";这里上传的是CAD文件,拼接后缀dwg

resteay上传单个文件/多个文件到本地的更多相关文章

  1. struts2学习笔记--上传单个和批量文件示例

    struts2提供了对上传文件的支持,将上传后的文件封装为java.io.File对象,开发者只需要在Action中定义一个File类型的变量,然后直接使用该变量,将它复制到目的目录即可. 单个文件上 ...

  2. input文件上传(上传单个文件/多选文件/文件夹、拖拽上传、分片上传)

    //上传单个/多个文件 <input title="点击选择文件" id="h5Input1" multiple="" accept= ...

  3. js实现上传单个文件

    js上传文件:js 上传单个文件(任意大小) 疯狂代码 http://www.CrazyCoder.cn/ :http:/www.CrazyCoder.cn/Javascript/Article832 ...

  4. GitHub限制上传单个大于100M的大文件

    工作中遇到这个问题,一些美术资源..unitypackage文件大于100M,Push到GitHub时被拒绝.意思是Push到GitHub的每个文件的大小都要求小于100M. 搜了一下,很多解决办法只 ...

  5. Spring Mvc:用MultiPartFile上传单个文件,多个文件

    1.单个文件上传步骤: 添加Apache文件上传jar包 首先需要下载两个apache上传文件的jar包,commons-fileupload-1.3.1jar,commons-io-2.4.jar ...

  6. thinkphp表单上传文件并将文件路径保存到数据库中

    上传单个文件,此文以上传图片为例,上传效果如图所示 创建数据库upload_img,用于保存上传路径 CREATE TABLE `seminar_upload_img` (  `id` int(11) ...

  7. 用Express、MySQL搭建项目(接口以及静态文件获取、文件上传等)

    一.简介 本文将主要基于node.js使用express框架搭建一个后台环境,包括如何自定义项目目录.所用依赖以及中间件.路由以及模板引擎.接口数据获取以及文件上传等内容. 二.后台环境搭建 1.新建 ...

  8. tp3.2 上传文件及下载文件

    公共方法 UploadFile.class.php() // 开始 , , , ,];];,; ;; ::::::;,) {//文件上传失败 //捕获错误代码$this->error($file ...

  9. Spring MVC-------文件上传,单文件,多文件,文件下载

    Spring MVC 框架的文件上传是基于 commons-fileupload 组件的文件上传,只不过 Spring MVC 框架在原有文件上传组件上做了进一步封装,简化了文件上传的代码实现,取消了 ...

随机推荐

  1. 在ie6下将png24图片透明

    没想到IETester中IE6和IE6真实版本不一样...之前一直没有实现png图片的透明度,现在发现原来是版本不一样惹的祸.总之,我将解决方法以demo的方式显示出来,以供再次利用. <!DO ...

  2. cannot be resolved to a type (Java)

    最近经常遇到cannot be resolved to a type (Java)报错,以下为在网上找到的解决方案: 1.先看看有没有引用相关jar包2.检查jar是否引用了多个相同的,或者多个jar ...

  3. bzoj 4598: [Sdoi2016]模式字符串

    题目描述 给出n个结点的树结构T,其中每一个结点上有一个字符,这里我们所说的字符只考虑大写字母A到Z,再给出长度为m的模式串s,其中每一位仍然是A到z的大写字母. Alice希望知道,有多少对结点&l ...

  4. CodeForces - 396C On Changing Tree(树状数组)

    题目大意 给定一棵以1为根的树,初始时所有点为0 给出树的方式是从节点2开始给出每一个点的父亲 然后是 $m$ 次操作,分为两种 $1 v,k,x$ 表示在以v为根的子树中的每一个点上添加 $x-i* ...

  5. 面对对象二,super......反射

    一.super() super()  : 主动调用其他类的成员 # 单继承 # 在单继承中 super,主要是用来调用父类的方法的. class A: def __init__(self): self ...

  6. jmeter性能测试指标

    1.jp@gc - Actiive Threads Over Time:不同时间的活动用户数量展示(图表) 当前的时间间隔是1毫秒,在setting中可以设置时间间隔以及其他的参数 2.jp@gc - ...

  7. 大数据框架:Spark vs Hadoop vs Storm

    大数据时代,TB级甚至PB级数据已经超过单机尺度的数据处理,分布式处理系统应运而生. 知识预热 「专治不明觉厉」之“大数据”: 大数据生态圈及其技术栈: 关于大数据的四大特征(4V) 海量的数据规模( ...

  8. 【python】10分钟教你用python如何正确把妹

    前言 今天没妹子约,刚好研究一下.如何用神奇的python打造一个把妹神器吧.看完这个,你们就能走向人生巅峰,迎娶白富美啦. 我知道你们想看看效果 image 当然啦,这只是测试版的效果,真正的版本可 ...

  9. scrapy连接MongoDB

    Scrapy中连接MongoDB所需要做的工作如下: 1.settings中需要设置的部分: # 启动管道组件 ITEM_PIPELINES = { 'QianChengWuYu.mongoDBPip ...

  10. php中签名公钥、私钥(SHA1withRSA签名)以及AES(AES/ECB/PKCS5Padding)加密解密详解

    由于http请求是无状态,所以我们不知道请求方到底是谁.于是就诞生了签名,接收方和请求方协商一种签名方式进行验证,来取得互相信任,进行下一步业务逻辑交流. 其中签名用得很多的就是公钥私钥,用私钥签名, ...