package wang.dreamland.www.controller;
import com.alibaba.fastjson.JSON;
import com.google.common.io.ByteStreams;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import wang.dreamland.www.common.Constants;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* Created by wly on 2018/5/20.
*/
@Controller
public class UploadController {
private final static Logger log = Logger.getLogger(UploadController.class);
@RequestMapping(value = "/fileUpload")
@ResponseBody
public Map<String, Object> fileUpload(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException,
FileUploadException {
ServletContext application = request.getSession().getServletContext();
String savePath = Constants.SERVER_FILE_ROOT;
// String savePath = application.getRealPath("/") + "images/";
// String saveUrl = request.getContextPath() + "/images/";
String saveUrl = Constants.DREAMLAND_DOMAIN + "/images/";
//上传图片,保存路径为:G:\wly\dreamland\target\dreamland\images/,文件url为:/images/
log.info( "上传图片,保存路径为:"+savePath+",文件url为:"+saveUrl );
// 定义允许上传的文件扩展名
HashMap<String, String> extMap = new HashMap<String, String>();
extMap.put("image", "gif,jpg,jpeg,png,bmp");
extMap.put("flash", "swf,flv");
extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
// 最大文件大小
long maxSize = 1000000;
response.setContentType("text/html; charset=UTF-8");
if (!ServletFileUpload.isMultipartContent(request)) {
return getError("请选择文件。");
}
// 检查目录
File uploadDir = new File(savePath);
if (!uploadDir.isDirectory()) {
return getError("上传目录不存在。");
}
// 检查目录写权限
if (!uploadDir.canWrite()) {
return getError("上传目录没有写权限。");
}
String dirName = request.getParameter("dir");
if (dirName == null) {
dirName = "image";
}
if (!extMap.containsKey(dirName)) {
return getError("目录名不正确。");
}
// 创建文件夹
savePath += dirName + "/";
saveUrl += dirName + "/";
File saveDirFile = new File(savePath);
if (!saveDirFile.exists()) {
saveDirFile.mkdirs();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
File dirFile = new File(savePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Iterator item = multipartRequest.getFileNames();
while (item.hasNext()) {
String fileName = (String) item.next();
MultipartFile file = multipartRequest.getFile(fileName);
// 检查文件大小
if (file.getSize() > maxSize) {
return getError("上传文件大小超过限制。");
}
// 检查扩展名
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
if (!Arrays. asList(extMap.get(dirName).split(",")).contains(fileExt)) {
return getError("上传文件扩展名是不允许的扩展名。\n只允许"
+ extMap.get(dirName) + "格式。");
}
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
try {
File uploadedFile = new File(savePath, newFileName);
ByteStreams.copy(file.getInputStream(), new FileOutputStream(uploadedFile));
} catch (Exception e) {
return getError("上传文件失败。");
}
Map<String, Object> msg = new HashMap<String, Object>();
msg.put("success", 1);
msg.put("url", saveUrl + newFileName);
// =======savePath=======G:\wly\dreamland\target\dreamland\images/image/20180108/=====url======/images/image/20180108/20180108180524_256.png
log.info( "=======savePath======="+savePath+"=====url======"+saveUrl+newFileName );
return msg;
}
return null;
}
private Map<String, Object> getError(String message) {
Map<String, Object> msg = new HashMap<String, Object>();
msg.put("success",0);//0失败
msg.put("message", message);
return msg;
}
@RequestMapping(value = "/fileManager")
public void fileManager(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ServletContext application = request.getSession().getServletContext();
ServletOutputStream out = response.getOutputStream();
// 根目录路径,可以指定绝对路径,比如 /var/www/attached/
String rootPath = application.getRealPath("/") + "images/";
// 根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/
String rootUrl = request.getContextPath() + "/images/";
// 图片扩展名
String[] fileTypes = new String[] { "gif", "jpg", "jpeg", "png", "bmp" };
String dirName = request.getParameter("dir");
if (dirName != null) {
if (!Arrays.<String> asList(
没有合适的资源?快使用搜索试试~ 我知道了~
基于SSM框架+mysql开发的一个博客系统项目源码.zip
共1759个文件
png:926个
js:292个
gif:148个
0 下载量 183 浏览量
2023-09-04
14:57:56
上传
评论
收藏 9.26MB ZIP 举报
温馨提示
项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。项目真实可靠,源码都经测试过,能跑通,可用作本科毕业设计经测试过,请放心下载使用。
资源推荐
资源详情
资源评论
收起资源包目录
基于SSM框架+mysql开发的一个博客系统项目源码.zip (1759个子文件)
AUTHORS 6KB
main.css.bak 11KB
zui.css 207KB
zui.css 180KB
editormd2.css 179KB
zui2.css 176KB
editormd3.css 154KB
editormd.css 153KB
zui.min.css 145KB
zui.min.css 145KB
bootstrap.css 143KB
zui.lite.css 131KB
zui.lite.css 131KB
zui.lite.min.css 105KB
bootstrap.min.css 97KB
emojify.css 68KB
editormd.min.css 60KB
editormd.min.css 58KB
editormd.min.css 58KB
editormd.preview2.css 55KB
editormd.preview.css 55KB
editormd.preview.min.css 44KB
ueditor.css 40KB
zui-theme.css 39KB
ueditor.min.css 33KB
zui-theme.css 31KB
zui-theme.min.css 27KB
ambiance.css 26KB
bootstrap-theme.css 26KB
kindeditor.css 23KB
bootstrap-theme.min.css 23KB
kindeditor.min.css 19KB
zui.uploader.css 16KB
zui.uploader.min.css 13KB
chosen.css 12KB
main.css 11KB
chosen.min.css 10KB
codemirror.css 8KB
zui.dashboard.css 7KB
zui.dashboard.min.css 6KB
dreamland.css 5KB
zui.datatable.css 5KB
datetimepicker.css 5KB
codemirror.min.css 5KB
mdn-like.css 5KB
solarized.css 5KB
datetimepicker.min.css 5KB
zui.datatable.min.css 4KB
comment2.css 3KB
comment.css 3KB
merge.css 3KB
zui.calendar.css 3KB
zui.imgcutter.css 3KB
lint.css 3KB
zui.treemap.css 3KB
xq-dark.css 3KB
zui.calendar.min.css 3KB
style.css 3KB
zui.board.css 2KB
zui.imgcutter.min.css 2KB
lesser-dark.css 2KB
zui.treemap.min.css 2KB
pastel-on-dark.css 2KB
xq-light.css 2KB
tomorrow-night-eighties.css 2KB
editormd.logo.css 2KB
erlang-dark.css 2KB
zui.board.min.css 2KB
zenburn.css 2KB
twilight.css 2KB
midnight.css 2KB
vibrant-ink.css 2KB
mbo.css 2KB
base16-dark.css 2KB
base16-light.css 2KB
style.css 2KB
tern.css 2KB
3024-night.css 2KB
paraiso-dark.css 2KB
paraiso-light.css 2KB
tomorrow-night-bright.css 2KB
3024-day.css 2KB
blackboard.css 2KB
colorforth.css 2KB
editormd.logo.min.css 2KB
the-matrix.css 2KB
night.css 2KB
rubyblue.css 2KB
zui.colorpicker.css 2KB
monokai.css 1KB
cobalt.css 1KB
simplescrollbars.css 1KB
zui.colorpicker.min.css 1KB
eclipse.css 1KB
prettify.css 960B
neo.css 932B
elegant.css 768B
prettify.css 741B
neat.css 693B
show-hint.css 662B
共 1759 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18
资源评论
c++服务器开发
- 粉丝: 3046
- 资源: 4461
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功