代码如下:

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. [LeetCode 题解]: Generate Parentheses

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...

  2. WP8注册文件关联---分享图片

    其实这个博友写得差不多了http://www.cnblogs.com/lipan/archive/2013/05/15/3080275.html 里面提供大部分代码,没有提供源代码,小弟就拷贝过来调试 ...

  3. 关于SVN浏览服务器的错误

    这种错误是因为URL错误,需要把https://iZ1gyqtig7Z/svn/BoLeBang/   换成自己的公网ip地址 https://xx.xx.xx.xxsvn/BoLeBang/ 就可以 ...

  4. 腾讯云通信UserSig生成.Net实现

    腾讯云通信后台生成usersig只有java实现代码.以下是根据java代码转换为net实现,java版GitHub地址:https://github.com/TencentVideoCloudMLV ...

  5. PT, BPT, VCM

    - VCM可以理解为BPT与PPM之间的MIS,并没有比BPT效果好很多 - BPT, VCM这类算法的主要作用是加快caustics的收敛,对indirect diffuse没有很明显的加速 - i ...

  6. oracle所有的乱码解决方案

    oracle所有的乱码解决方案 是不是经常看见各式各样的乱码,看见头就大了,大家别怕,所有的问题都会有一个甚至不止一个的解决方案,有句名言说的好:万法不离其踪.网上大部分把工具的乱码和代码操作的乱码混 ...

  7. 5个Shell脚本编程入门练习例子

    例子一:绘制特殊图形 复制代码代码如下: #!/bin/bash MAX_NO=0 echo -n "Enter Number between (5 to 9) : " read ...

  8. nowcoder(牛客网)提高组模拟赛第一场 解题报告

    T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check ...

  9. eclipse - maven使用国内镜像

    1 使用 maven 插件 - 官网下载 2 修改 eg : apache-maven-3.6.0-bin\apache-maven-3.6.0\conf\ setting.xml - 可备份下 3 ...

  10. 【OCP-12c】CUUG最新考试原题整理及答案(071-11)

    11.(5-8) choose the best answer: Examine the structure of the BOOKS_TRANSACTIONS table. You want to ...