1.上传方法
package com.*;
import *;
public class BaseController {
protected Logger logger = LoggerFactory.getLogger(getClass());
/**
* 输出JSON数据
*
* @param response
* @param jsonStr
*/
public void writeJson(HttpServletResponse response, String jsonStr) {
response.setContentType("text/json;charset=utf-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter pw = null;
try {
pw = response.getWriter();
pw.write(jsonStr);
pw.flush();
} catch (Exception e) {
logger.info("输出JSON数据异常", e);
}finally{
if(pw!=null){
pw.close();
}
}
}
/**
*
* 向页面响应json字符数组串流.
*
* @param response
* @param jsonStr
* @throws IOException
* @return void
*/
public void writeJsonStr(HttpServletResponse response, String jsonStr) throws IOException {
OutputStream outStream = null;
try {
response.reset();
response.setCharacterEncoding("UTF-8");
outStream = response.getOutputStream();
outStream.write(jsonStr.getBytes("UTF-8"));
outStream.flush();
} catch (IOException e) {
logger.info("输出JSON数据异常(writeJsonStr)", e);
} finally {
if(outStream!=null){
outStream.close();
}
}
}
public void writeJsonStr(HttpServletResponse response, InputStream in) throws IOException {
if(null == in ){
return ;
}
OutputStream outStream = null;
try {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
outStream = response.getOutputStream();
int len = 0;
byte[] byt = new byte[1024];
while ((len = in.read(byt)) != -1) {
outStream.write(byt, 0, len);
}
outStream.flush();
} catch (IOException e) {
logger.info("输出JSON数据异常(writeJsonStr)", e);
} finally {
if(outStream!=null){
outStream.close();
in.close();
}
}
}
/**
* 输出JSON数据
*
* @param response
* @param obj
*/
public void writeJson(HttpServletResponse response, Object obj) {
response.setContentType("text/json;charset=utf-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter pw = null;
// Gson gson = new Gson();
try {
pw = response.getWriter();
// pw.write(gson.toJson(obj));
pw.write(JSON.toJSONString(obj));
pw.flush();
} catch (Exception e) {
logger.info("输出JSON数据异常", e);
}finally{
if(pw!=null){
pw.close();
}
}
}
public void writeHtml(HttpServletResponse response, String html) {
response.setContentType("text/html;;charset=utf-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter pw = null;
try {
pw = response.getWriter();
pw.write(html);
pw.flush();
} catch (Exception e) {
logger.info("输出HTML数据异常", e);
}finally{
if(pw!=null){
pw.close();
}
}
}
}
2.上传功能实现类
package com.*;
import ...;
/**
* 照片上传工具类
* @author admin
*
*/
@Controller
@RequestMapping("/business")
public class UploaderController extends BaseController{
private static final Logger logger = LoggerFactory.getLogger(UploaderController.class);
@ResponseBody
@RequestMapping("/uploadImg")
public ResponseMode uploadPicture(@RequestParam(value="file",required=false)MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException {
ResponseResult result = new ResponseResult();
Map<String, Object> map = Maps.newHashMap();
File targetFile=null;
//返回存储路径
String url="";
int code=1;
System.out.println(file);
//获取文件名加后缀
String fileName = file.getOriginalFilename();
if(fileName != null && fileName != ""){
//图片访问的URI
String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() +"/upload/imgs/";
//文件临时存储位置
String path = request.getSession().getServletContext().getRealPath("") + "upload" + File.separator + "imgs";
//文件后缀
String fileSuffix = fileName.substring(fileName.lastIndexOf("."), fileName.length());
//新的文件名
fileName = System.currentTimeMillis()+"_"+new Random().nextInt(1000) + fileSuffix;
//先判断文件是否存在
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String fileAdd = sdf.format(new Date());
//获取文件夹路径
path = path + File.separator + fileAdd + File.separator;
logger.info("path:{}",path);
File file1 =new File(path);
//如果文件夹不存在则创建
if(!file1 .exists() && !file1 .isDirectory()){
file1 .mkdirs();
}
//将图片存入文件夹
targetFile = new File(file1, fileName);
try {
//将上传的文件写到服务器上指定的文件。
file.transferTo(targetFile);
String projectPath = System.getProperty("user.dir");
logger.info("projectPath:{}",projectPath);
//文件复制
String src = path + fileName;
//根据自己系统的resource 目录所在位置进行自行配置
String destDir = projectPath + File.separator + "apply-patch"+File.separator+"bank-master"+File.separator+"src"+File.separator+"main"+ File.separator +"resources"+File.separator+"static"+ File.separator+"upload"+File.separator+"imgs" + File.separator + fileAdd + File.separator;
copyFile(src,destDir,fileName);
url= returnUrl + fileAdd + "/"+ fileName;
code=0;
result.setCode(code);
result.setMessage("图片上传成功");
map.put("url", url);
return ResponseMode.success(map);
} catch (Exception e) {
logger.error("exception:",e);
}
}
//writeJson(response, result);
return ResponseMode.fail(new RjRuntimeException("系统异常,稍后再试"));
}
/**
* 文件复制
* @param src
* @param destDir
* @param fileName
* @throws IOException
*/
public void copyFile(String src,String destDir,String fileName) throws IOException{
FileInputStream in=new FileInputStream(src);
File fileDir = new File(destDir);
if(!fileDir.isDirectory()){
fileDir.mkdirs();
}
File file = new File(fileDir,fileName);
if(!file.exists()){
file.createNewFile();
}
FileOutputStream out=new FileOutputStream(file);
int c;
byte buffer[]=new byte[1024];
while((c=in.read(buffer))!=-1){
for(int i=0;i<c;i++){
out.write(buffer[i]);
}
}
in.close();
out.close();
}
}
3.响应dto
package com.*;
import java.util.Map;
/**
* @author ex-qiminhui001
*/
public class ResponseResult {
private Integer code;
private String message;
private Map<String, Object> result;
public Integer getCode() {
return this.code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public Map<String, Object> getResult() {
return this.result;
}
public void setResult(Map<String, Object> result) {
this.result = result;
}
}