package com.code.admin;
import com.code.util.GlobalResult;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
/**
* 文件上传请求处理类
*/
@Controller
public class FileUploadController {
@RequestMapping(value = "/uploadFile", produces = MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8")
@ResponseBody
public GlobalResult uploadFile(MultipartFile file, HttpServletRequest request) {
if (file == null) {
return GlobalResult.errorMsg("文件不能为空!");
}
String fileSub = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase();
//if (".jpg".equals(fileSub) || ".jpeg".equals(fileSub) || ".png".equals(fileSub) || ".gif".equals(fileSub)) {
if (true) {
Random d = new Random();
String img = System.currentTimeMillis() + "_" + d.nextInt(10) + "" + fileSub;
//获取当前项目上传文件路径 中的upload文件中
//将当前日期格式化为文件夹路径 例如"20190203"
//获取项目路径 项目名(上下文)
String basePath = request.getSession().getServletContext().getRealPath("/uploads");
System.out.println("basePath = " + basePath);
/*
使用配置文件配置文件上传路径
String dateStr = (new SimpleDateFormat("yyyyMMdd/")).format(new Date());
String path = ConfigUtil.getUploadPath() + dateStr; //读取配置文件中的路径+时间
*/
String path = basePath;
try {
File f = new File(path);
if (!f.exists()) {
f.mkdirs();
}
file.transferTo(new File(f, img));
} catch (Exception e) {
e.printStackTrace();
return GlobalResult.errorMsg("文件上传错误,文件夹不能创建");
}
//获取项目路径 例如项目名为test 则值为 /test
String contextPath = request.getServletContext().getContextPath();
//获取图片上传绝对路径保存数据库
//String contextPath = request.getScheme() + "://" + request.getServerName()+ ":" + request.getServerPort() + request.getContextPath()+ "/";
Map<String, String> map = new HashMap<>();
map.put("src", contextPath + "/uploads/" + img);
map.put("savePath", path + File.separatorChar + img);
return GlobalResult.ok(map);
} else {
return GlobalResult.errorMsg("文件格式不支持,请重新选择!");
}
}
/**
* layui上传文件
* 返回数据格式
* {
* "code": 0 //0表示成功,其它失败
* ,"msg": "" //提示信息 //一般上传失败后返回
* ,"data": {
* "src": "图片路径"
* ,"title": "图片名称" //可选
* }
* }
*
* @param file
* @param request
* @return
*/
@RequestMapping(value = "/layeditUploadFile", produces = MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8")
@ResponseBody
public Map layeditUploadFile(MultipartFile file, HttpServletRequest request) {
Map map = new HashMap();
if (file == null) {
map.put("code", -1);
map.put("msg", "文件不能为空!");
return map;
}
String fileSub = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase();
if (".jpg".equals(fileSub) || ".jpeg".equals(fileSub) || ".png".equals(fileSub) || ".gif".equals(fileSub)) {
Random d = new Random();
String img = System.currentTimeMillis() + "_" + d.nextInt(10) + "" + fileSub;
//获取当前项目上传文件路径 中的upload文件中
//将当前日期格式化为文件夹路径 例如"20190203"
//获取项目路径 项目名(上下文)
String basePath = request.getSession().getServletContext().getRealPath("/uploads");
System.out.println("basePath = " + basePath);
/*
使用配置文件配置文件上传路径
String dateStr = (new SimpleDateFormat("yyyyMMdd/")).format(new Date());
String path = ConfigUtil.getUploadPath() + dateStr; //读取配置文件中的路径+时间
*/
String path = basePath;
try {
File f = new File(path);
if (!f.exists()) {
f.mkdirs();
}
file.transferTo(new File(f, img));
} catch (Exception e) {
e.printStackTrace();
map.put("code", -1);
map.put("msg", "文件上传错误,文件夹不能创建!");
return map;
}
//获取项目路径
String contextPath = request.getServletContext().getContextPath();
map.put("code", "0"); //0代表成功
map.put("msg", "上传成功success"); //0代表成功
Map data = new HashMap();
data.put("src", contextPath + "/uploads/" + img);
data.put("savePath", path + img);
map.put("data", data); //0代表成功
return map;
} else {
map.put("code", -1);
map.put("msg", "文件格式不支持,请重新选择!");
return map;
}
}
/**
* 文件下载
*
* @param fileName 文件名称 例如 /CommonWeb/uploads/1570244659826_1.jpg
* @param request
* @param response
* @return
*/
@RequestMapping("/downloadFile")
public String download(String fileName, HttpServletRequest request, HttpServletResponse response) {
fileName = fileName.split("\\/")[3];
System.out.println("fileName = " + fileName);
response.setContentType("text/html;charset=utf-8");
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
String downLoadPath = request.getSession().getServletContext().getRealPath("/uploads/") + fileName;
; //注意不同系统的分隔符
// String downLoadPath =filePath.replaceAll("/", "\\\\\\\\"); //replace replaceAll区别 *****
System.out.println("downLoadPath=" + downLoadPath);
try {
long fileLength = new File(downLoadPath).length();
response.setContentType("application/x-msdownload;");
response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
response.setHeader("Content-Length", String.valueOf(fileLength));
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Spring MVC+mybatis+layui+mysql的在线批改作业系统源码+数据库 在线批改作业系统权限分有管理员、教师、学生三个权限。实现的有学生作业相识的算法,统计学生抄作业情况,还有学生还在线学习视频。学生可以提交作业,老师批改作业,学生查看反馈等
资源推荐
资源详情
资源评论
收起资源包目录
基于Spring MVC+mybatis+layui+mysql的在线批改作业系统源码+数据库 (970个子文件)
IndexController.class 10KB
IndexController.class 10KB
IndexController.class 8KB
FileUploadController.class 7KB
FileUploadController.class 7KB
FileUploadController.class 7KB
AdmininfoController.class 6KB
AdmininfoController.class 6KB
AdmininfoController.class 6KB
HttpClientUtil.class 5KB
HttpClientUtil.class 5KB
HttpClientUtil.class 5KB
NoticeinfoController.class 3KB
NoticeinfoController.class 3KB
NoticeinfoController.class 3KB
UserinfoController.class 3KB
UserinfoController.class 3KB
UserinfoController.class 3KB
DatainfoController.class 3KB
HomeworkController.class 3KB
SortinfoController.class 3KB
WorkinfoController.class 3KB
DatainfoController.class 3KB
HomeworkController.class 3KB
SortinfoController.class 3KB
WorkinfoController.class 3KB
DatainfoController.class 3KB
HomeworkController.class 3KB
SortinfoController.class 3KB
WorkinfoController.class 3KB
MsginfoController.class 3KB
MsginfoController.class 3KB
MsginfoController.class 3KB
GlobalResult.class 3KB
GlobalResult.class 3KB
GlobalResult.class 3KB
Datainfo.class 2KB
Datainfo.class 2KB
Datainfo.class 2KB
Userinfo.class 2KB
Userinfo.class 2KB
Userinfo.class 2KB
SimilarityRate.class 2KB
SimilarityRate.class 2KB
Admininfo.class 2KB
Admininfo.class 2KB
Admininfo.class 2KB
Homework.class 2KB
Homework.class 2KB
Homework.class 2KB
DelTagsUtil.class 2KB
DelTagsUtil.class 2KB
Noticeinfo.class 2KB
Noticeinfo.class 2KB
Noticeinfo.class 2KB
Msginfo.class 2KB
Msginfo.class 2KB
Msginfo.class 2KB
Workinfo.class 2KB
Workinfo.class 2KB
Workinfo.class 2KB
Sortinfo.class 1KB
Sortinfo.class 1KB
Sortinfo.class 1KB
CommonUtils.class 1009B
CommonUtils.class 1009B
CommonUtils.class 1009B
CommonMapper.class 670B
CommonMapper.class 670B
CommonMapper.class 670B
AppTest.class 469B
NoticeinfoMapper.class 379B
NoticeinfoMapper.class 379B
NoticeinfoMapper.class 379B
AdmininfoMapper.class 376B
AdmininfoMapper.class 376B
AdmininfoMapper.class 376B
DatainfoMapper.class 373B
SortinfoMapper.class 373B
UserinfoMapper.class 373B
WorkinfoMapper.class 373B
HomeworkMapper.class 373B
DatainfoMapper.class 373B
SortinfoMapper.class 373B
UserinfoMapper.class 373B
WorkinfoMapper.class 373B
HomeworkMapper.class 373B
DatainfoMapper.class 373B
SortinfoMapper.class 373B
UserinfoMapper.class 373B
WorkinfoMapper.class 373B
HomeworkMapper.class 373B
MsginfoMapper.class 370B
MsginfoMapper.class 370B
MsginfoMapper.class 370B
layui.css 77KB
layui.css 77KB
layui.css 77KB
admin.css 21KB
admin.css 21KB
共 970 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
程序员柳
- 粉丝: 6326
- 资源: 1373
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功