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的在线批改作业系统设计,使用Java、JavaScript、CSS和HTML语言开发,包含972个文件。主要文件类型包括225个GIF图片文件、176个JSP文件、159个JAR文件、95个Class文件、93个JavaScript文件、43个JPG图片文件、42个PNG图片文件、36个CSS文件和33个Java源文件。该项目实现了学生、教师和管理员三个不同权限的用户,采用Spring MVC框架和Mybatis框架连接数据库,提供了学生作业相似度算法、抄作业情况统计以及在线学习视频等功能。学生可以提交作业,老师可以批改作业并给出反馈,适合用于在线教育平台的开发和部署。
资源推荐
资源详情
资源评论
收起资源包目录
基于Spring MVC和Mybatis的在线批改作业系统设计源码 (971个子文件)
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
HomeworkController.class 3KB
SortinfoController.class 3KB
DatainfoController.class 3KB
WorkinfoController.class 3KB
SortinfoController.class 3KB
HomeworkController.class 3KB
DatainfoController.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
SortinfoMapper.class 373B
DatainfoMapper.class 373B
WorkinfoMapper.class 373B
UserinfoMapper.class 373B
HomeworkMapper.class 373B
HomeworkMapper.class 373B
WorkinfoMapper.class 373B
UserinfoMapper.class 373B
DatainfoMapper.class 373B
SortinfoMapper.class 373B
UserinfoMapper.class 373B
DatainfoMapper.class 373B
WorkinfoMapper.class 373B
HomeworkMapper.class 373B
SortinfoMapper.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
共 971 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
沐知全栈开发
- 粉丝: 4742
- 资源: 3374
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功