SpringMVC文件上传(二)指定文件
在上面的一节中,我们查看运行的结果,即然在一个zip格式的文件,这显然不是我们所想要的,所以这一节,我们主要处理就是,要用户必须上传图片,而且上传的文件不能太大,如里不满足的话,那么页面将会报错,报错信息要以友好地形式提示。
1.上传是图片文件
我们修改pictureUploadController的类,修改的目的是文件 必须是图片的。下面是笔者修改后的代码。
package masterSpringMvc.profile;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.io.*;
@Controller
public class PictureUploadController {
public static final Resource PICTURES_DIR = new
FileSystemResource("./pictures");
@RequestMapping("upload")
public String uploadPage() {
return "profile/uploadPage";
}
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String onUpload(MultipartFile file, RedirectAttributes
redirectAttrs) throws IOException {
if (file.isEmpty() || !isImage(file)) {
redirectAttrs.addFlashAttribute("error", "Incorrect file.
Please upload a picture.");
return "redirect:/upload";
}
copyFileToPictures(file);
return "profile/uploadPage";
}
private Resource copyFileToPictures(MultipartFile file) throws
IOException {
String fileExtension = getFileExtension(file.
getOriginalFilename());
File tempFile = File.createTempFile("pic", fileExtension,
PICTURES_DIR.getFile());
try (InputStream in = file.getInputStream();
OutputStream out = new FileOutputStream(tempFile)) {
IOUtils.copy(in, out);
}
return new FileSystemResource(tempFile);
}
private boolean isImage(MultipartFile file) {
return file.getContentType().startsWith("image");
}
2.视图层修改
我们首先还是在两份国际化文件中添加下面的字段,对于法语的文件 ,读者自己翻译添加。
upload.io.exception=An error occurred while uploading the file. Please try again.
upload.file.too.big=Your file is too big.
之后,我们在uploadPage中添加下面的代码,这个作用就是当文件上传不是图片时风们要友好地提示。
<div class="col s12 center red-text" th:text="${error}"
th:if="${error}">
Error during upload
</div>
3.总结
这里笔者已经对上传文件做了处理,要求就是上传的文件必须是图片,如日不是图片,那么将会提示下图的信息。可是还有问题,笔者有之前说过了要对文件的大小作判断,如果大小超出了范围,我们也要友好提示,可是这一章节里,我们并没有实现。不要着急,我们下一节将会讲解。
源码下载:git@github.com:owenwilliam/masterSpringMVC.git
SpringMVC文件上传(二)指定文件相关推荐
- SpringMVC 单文件上传与多文件上传
一.简述 一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件 ...
- Dropzone单文件上传、多文件上传、文件夹上传,springmvc接收,上传至Minio的一系列问题
0 前言 1.项目需要上传文件和大量的文件夹,页面只有一个input file标签会很丑,偶然间得知dropzone类库, 决定使用. 2. 项目后端采用springmvc接收,调用minio代码上传 ...
- 在Struts2中实现文件上传(二)
发布运行应用程序,在浏览器地址栏中键入:http://localhost:8080/Struts2_Fileupload/FileUpload.jsp,出现图示页面: 清单7 FileUpload ...
- WEB攻防-通用漏洞文件上传二次渲染.htaccess变异免杀
目录 知识点 详细点 文件二次渲染 php删除规则 例题 CTF-Web入门-162 CTF-Web入门-163 CTF-Web入门-164 CTF-Web入门-165 CTF-Web入门-166 C ...
- nginx java文件上传_Nginx实现文件的上传和下载
文件的上传只要保证特殊的地址先到达Nginx,然后通过Nginx指定至指定的服务器即可,目前配置是本机.文件的下载的做法就是把本机的当前目录下面的文件给返回回去. server { listen ; ...
- Ruoyi实现单文件上传和多文件打包压缩包下载
目录 单文件上传篇 1.html 2.JS 3.Controller 3.1 Global.getProfile() 3.3.1 JarBasePath.getBaseJarPathStr() 3.2 ...
- 文件上传 java web_JavaWeb 文件上传下载
1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图片或网盘等功能都是利用文件上传下 ...
- 多文件上传,大文件上传3、5个G,那都不是事
一套大文件上传的教程给大家. https://www.yyjcw.com/html/ke/34.html 重点讲解了多文件上传,大文件上传,分块上传,断点续传,文件秒传,上传失败自动修复再上传等功能, ...
- SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)
SSM框架使用Layui文件上传插件实现多文件上传(多文件列表) pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <!--co ...
- springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
springboot文件上传,单文件上传和多文件上传 项目结构及pom.xml 创建文件表单页面 编写javabean 编写controller映射 MultipartFile类 @RequestPa ...
最新文章
- Facebook 正在研究新型 AI 系统,以自我视角与世界进行交互
- linux中的tasklet机制【转】
- 测试php连接mysql
- Verilog中可综合与不可综合的语句
- Educational Codeforces Round 44 (Rated for Div. 2)
- 暂时无法登陆GOOGLE,却依然可以用GOOGLE搜索--更多GOOGLE入口
- linux一步一脚印---more、less、head、tail
- 二叉树先序遍历,中序遍历,后序遍历,层次遍历学习总结及完整C/C++代码
- LeetCode 1560. 圆形赛道上经过次数最多的扇区
- VBA 打开文件对话框
- Tomcat绑定jre
- urllib2 request 模拟伪装浏览器
- VS2005 SP1补丁下载与安装
- oracle timesten tt的启动与停止
- 华为路由器GRE隧道配置
- 永不消逝的电波(一):无线电入门篇
- 沧海的孤塔-chimera
- MISC中图片隐藏文件分离
- 初窥门径——字典的更好使用方式
- C++多线程编程实战01:std::thread
热门文章
- mysql5.6.31安装及配置
- mysql 的一些操作
- HTML5文档结构语义:页眉的header和hgroup标签使用
- web安全day25:linux的NAT网络配置和yum的配置和使用
- H3C ospf与nat转换
- 计算机网络管理员技师题库那个好,计算机网络管理员高级技师题库.docx
- docker volume mysql_docker volume的理解
- C/C++ 基础算法2
- 对称二叉树(C++)
- 服务器(Windows系统)自建filebrowser网盘服务器超详细教程