package com.zzl.smartcommunitymanagement.controller;
import com.zzl.smartcommunitymanagement.common.MessageConstant;
import com.zzl.smartcommunitymanagement.common.Result;
import com.zzl.smartcommunitymanagement.common.StatusCode;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
import com.alibaba.fastjson.JSONObject;
/**
* @author zzl
* @Desc 文件上传控制器
*/
@RestController
@RequestMapping("/smartcommunity")
public class FileController {
/**
* 功能描述: 上传文件
* @param file 上传文件的参数名,必须和前端参数名称一致
* @param request 请求对象
* @param response 响应对象
* @return : com.zzl.smartcommunitymanagement.common.Result
*/
@RequestMapping(value="/fileupload")
public Result uploads(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
//获取当前项目所在绝对路径
String absolutePath = System.getProperty("user.dir");
//文件上传后所在绝对路径
String savePath = absolutePath+"/src/main/resources/static/fileupload/";
//保存在数据库的文件地址
String saveUrl = "/fileupload/";
// 定义允许上传的文件扩展名
HashMap<String, String> extMap = new HashMap<String, String>();
extMap.put("image", "gif,jpg,jpeg,png,bmp");
// 最大文件大小
long maxSize = 10000000; //10M
response.setContentType("text/html; charset=UTF-8");
if (!ServletFileUpload.isMultipartContent(request)) {
return new Result(false, StatusCode.ERROR, MessageConstant.NO_FILE_SELECTED);
}
File uploadDir = new File(savePath);
// 判断文件夹是否存在,如果不存在则创建文件夹
if (!uploadDir.exists()) {
uploadDir.mkdirs();
}
// 检查目录写权限
if (!uploadDir.canWrite()) {
return new Result(false, StatusCode.ERROR,MessageConstant.NO_WRITE_PERMISSION);
}
String dirName = request.getParameter("dir");
if (dirName == null) {
dirName = "image";
}
if (!extMap.containsKey(dirName)) {
return new Result(false, StatusCode.ERROR,MessageConstant.INCORRECT_DIRECTORY_NAME);
}
MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = mRequest.getFileMap();
String fileName = null;
Iterator<Map.Entry<String, MultipartFile>> iter = fileMap.entrySet().iterator();
for (String s : fileMap.keySet()) {
}
for (Iterator<Map.Entry<String, MultipartFile>> it = fileMap.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, MultipartFile> entry = it.next();
MultipartFile mFile = entry.getValue();
fileName = mFile.getOriginalFilename();
// 检查文件大小
if (mFile.getSize() > maxSize) {
return new Result(false, StatusCode.ERROR,MessageConstant.SIZE_EXCEEDS__LIMIT);
}
String fileExt = fileName.substring(fileName.lastIndexOf(".")+1);
if (!Arrays.<String> asList(extMap.get(dirName).split(",")).contains(fileExt)) {
return new Result(false, StatusCode.ERROR,MessageConstant.FILE_TYPE_ERROR);
}
UUID uuid = UUID.randomUUID();
String path = savePath + uuid.toString() +"."+ fileExt;
System.out.println("文件存储地址:【"+path+"】");
saveUrl = saveUrl + uuid.toString() +"."+ fileExt;
try {
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(path));
FileCopyUtils.copy(mFile.getInputStream(), outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
return new Result(true,StatusCode.OK, MessageConstant.COMMUNITY_PIC_UPLOAD_SUCCESS,saveUrl);
}
/**
* 功能描述: 删除文件
* @param fileName 文件名称参数,和前台传递的参数保持一致
* @return : com.zzl.smartcommunitymanagement.common.Result
*/
@RequestMapping(value="/delfile")
public Result fileDel(@RequestParam String fileName){
String name = fileName.replace("/fileupload/","");
//获取当前项目所在绝对路径
String absolutePath = System.getProperty("user.dir");
//文件上传后所在绝对路径
String savePath = absolutePath+"/src/main/resources/static/fileupload/";
File file = new File(savePath+name);
if (file.exists()){//文件是否存在
file.delete();//删除文件
}
return new Result(true,StatusCode.OK, MessageConstant.COMMUNITY_PIC_DEL_SUCCESS);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Java和Vue实现的智慧社区管理系统源码(前端和后端,毕业设计项目).zip 基于Java和Vue实现的智慧社区管理系统源码(前端和后端,毕业设计项目).zip 基于Java和Vue实现的智慧社区管理系统源码(前端和后端,毕业设计项目).zip 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java、Vue学习者。 也可作为课程设计、期末大作业。包含:项目源码、项目说明等,该项目可以直接作为毕设、课程设计使用。 也可以用来学习参考借鉴!
资源推荐
资源详情
资源评论
























收起资源包目录





































































































共 180 条
- 1
- 2
资源评论

- 普通网友2023-05-21非常有用的资源,可以直接使用,对我很有用,果断支持!

onnx
- 粉丝: 1w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大型数据库技术实验.doc
- vi设计与网站推广.ppt
- 路桥工程施工项目管理成本控制措施分析.doc
- (源码)基于JavaScript的小恐龙游戏AI训练系统.zip
- C语言-第2章.ppt
- 基于单片机的自动音乐播放器的方案设计书16910.doc
- 计算机网络犯罪侦查技术及策略探讨.docx
- 使用 Python 编写的单层神经网络实现
- 单片机的智能化避障小车研究与设计开发.doc
- Python编程:从入门到实践的核心指南
- 基于单片机控制的红外报警器的方案设计书.doc
- (源码)基于Angular框架的NgZcool系统.zip
- 单片机控制的节能型太阳能LED路灯的设计大学课程.doc
- (源码)基于PaddlePaddle框架的视频预测模型PredNet.zip
- (源码)基于ChibiOSRT的嵌入式机器人操作系统.zip
- 基于神经网络的课程设计:LaTeX 公式识别系统研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
