在上面的一节中,我们查看运行的结果,即然在一个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文件上传(二)指定文件相关推荐

  1. SpringMVC 单文件上传与多文件上传

    一.简述 一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件 ...

  2. Dropzone单文件上传、多文件上传、文件夹上传,springmvc接收,上传至Minio的一系列问题

    0 前言 1.项目需要上传文件和大量的文件夹,页面只有一个input file标签会很丑,偶然间得知dropzone类库, 决定使用. 2. 项目后端采用springmvc接收,调用minio代码上传 ...

  3. 在Struts2中实现文件上传(二)

    发布运行应用程序,在浏览器地址栏中键入:http://localhost:8080/Struts2_Fileupload/FileUpload.jsp,出现图示页面:   清单7 FileUpload ...

  4. WEB攻防-通用漏洞文件上传二次渲染.htaccess变异免杀

    目录 知识点 详细点 文件二次渲染 php删除规则 例题 CTF-Web入门-162 CTF-Web入门-163 CTF-Web入门-164 CTF-Web入门-165 CTF-Web入门-166 C ...

  5. nginx java文件上传_Nginx实现文件的上传和下载

    文件的上传只要保证特殊的地址先到达Nginx,然后通过Nginx指定至指定的服务器即可,目前配置是本机.文件的下载的做法就是把本机的当前目录下面的文件给返回回去. server { listen ; ...

  6. Ruoyi实现单文件上传和多文件打包压缩包下载

    目录 单文件上传篇 1.html 2.JS 3.Controller 3.1 Global.getProfile() 3.3.1 JarBasePath.getBaseJarPathStr() 3.2 ...

  7. 文件上传 java web_JavaWeb 文件上传下载

    1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图片或网盘等功能都是利用文件上传下 ...

  8. 多文件上传,大文件上传3、5个G,那都不是事

    一套大文件上传的教程给大家. https://www.yyjcw.com/html/ke/34.html 重点讲解了多文件上传,大文件上传,分块上传,断点续传,文件秒传,上传失败自动修复再上传等功能, ...

  9. SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)

    SSM框架使用Layui文件上传插件实现多文件上传(多文件列表) pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <!--co ...

  10. springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显

    springboot文件上传,单文件上传和多文件上传 项目结构及pom.xml 创建文件表单页面 编写javabean 编写controller映射 MultipartFile类 @RequestPa ...

最新文章

  1. Facebook 正在研究新型 AI 系统,以自我视角与世界进行交互
  2. linux中的tasklet机制【转】
  3. 测试php连接mysql
  4. Verilog中可综合与不可综合的语句
  5. Educational Codeforces Round 44 (Rated for Div. 2)
  6. 暂时无法登陆GOOGLE,却依然可以用GOOGLE搜索--更多GOOGLE入口
  7. linux一步一脚印---more、less、head、tail
  8. 二叉树先序遍历,中序遍历,后序遍历,层次遍历学习总结及完整C/C++代码
  9. LeetCode 1560. 圆形赛道上经过次数最多的扇区
  10. VBA 打开文件对话框
  11. Tomcat绑定jre
  12. urllib2 request 模拟伪装浏览器
  13. VS2005 SP1补丁下载与安装
  14. oracle timesten tt的启动与停止
  15. 华为路由器GRE隧道配置
  16. 永不消逝的电波(一):无线电入门篇
  17. 沧海的孤塔-chimera
  18. MISC中图片隐藏文件分离
  19. 初窥门径——字典的更好使用方式
  20. C++多线程编程实战01:std::thread

热门文章

  1. mysql5.6.31安装及配置
  2. mysql 的一些操作
  3. HTML5文档结构语义:页眉的header和hgroup标签使用
  4. web安全day25:linux的NAT网络配置和yum的配置和使用
  5. H3C ospf与nat转换
  6. 计算机网络管理员技师题库那个好,计算机网络管理员高级技师题库.docx
  7. docker volume mysql_docker volume的理解
  8. C/C++ 基础算法2
  9. 对称二叉树(C++)
  10. 服务器(Windows系统)自建filebrowser网盘服务器超详细教程