详解SpringMVC实现图片上传以及该注意的小细节

先附上图片上传的代码

jsp代码如下:

<form action="${path}/upload/uploadPic.do" method="post" enctype="multipart/form-data">
<div>
    ![](${path}/mall/image/load_image.png)
    <input type="file" id="input-image" name="input-image">
    <input id="input-relative-path" name="imgs" type="hidden" >
    <input id="input-last-path" type="hidden">
    <input type="submit" value="上传图片">
 </div>
</form>

controller代码:通过spring的方式实现

@Controller
@RequestMapping("/upload")
public class UploadController extends BaseController {
  @RequestMapping(value = "/uploadPic", method = RequestMethod.POST)
  @LoginCheck
  public void uploadPic(HttpServletRequest request, PrintWriter out, String lastRealPath) throws IOException {
    // 将当前上下文初始化给CommonsMultipartResolver
    CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
    // 检查form中是否有enctype="multipart/form-data"
    if (resolver.isMultipart(request)) {
      // 强制转化request
      MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
      // 从表单获取input名称
      Iterator<String> iterable = req.getFileNames();
      // 存在文件
      if (iterable.hasNext()) {
        String inputName = iterable.next();
        // 获得文件
        MultipartFile mf = req.getFile(inputName);
        byte[] mfs = mf.getBytes();
        // 定义文件名
        String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
          fileName = fileName + random.nextInt(10);
        }
        // 获得后缀名
        String oriFileName = mf.getOriginalFilename();
        String suffix = oriFileName.substring(oriFileName.lastIndexOf("."));

        // 上传图片到本地
        String localPath = "/Users/ZR/Desktop/webPro/console/src/main/webapp/image/" + fileName + suffix;
        mf.transferTo(new File(localPath));

        // 获取图片的宽高
        BufferedImage bufferedImage = ImageIO.read(new FileInputStream(new File(localPath)));
        int width = bufferedImage.getWidth();
        int height = bufferedImage.getHeight();
        // 获取文件大小
        long size = mf.getSize();
      }
    }
  }
}

spring-mvc.xml代码:

 <!--
  文件上传的视图解析器,id值是固定的
 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize" value="1024000"/>
  <!-- 其他属性 -->
</bean>

功能的实现其实很简单,但是对于初学者还是需要注意如下几个点

  • form上的enctype="multipart/form-data"不能忘记。
  • <input type="file" onchange="submitUpload()" id="input-image" name="input-image"> 的name标签可以随便取名,但是不能忽略,否则Iterator<String> iterable = req.getFileNames();这边获取的集合将为空。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringMVC框架实现上传图片的示例代码

    一.创建图片虚拟目录 在上传图片之前,先要设置虚拟目录(以IDEA为例) 打开工具栏的运行配置Edit Configurations 添加物理目录和并设置虚拟目录路径 添加img图片在img文件夹内 测试访问:http://localhost:8080/img/img.jpg 二.SpringMVC上传头像 1.SpringMVC对多部件类型的解析 上传图片SpringMVC.xml配置 在页面form中提交enctype="multipart/form-data"的数据时,需要spr

  • SpringMVC上传图片与访问

    关于springmvc上传图片的方法小编给大家整理了两种方法,具体内容如下所示: 第一种:(放在该项目下的物理地址对应的位置) a. 路径写法: String basePath="/WEB-INF/resources/upload"; String filePathName= request.getSession().getServletContext().getRealPath(basePath);存放路径 b. 实际路径: D:\WorkSpace\.metadata\.plugi

  • android实现图片上传功能(springMvc)

    本文实例为大家分享了Android图片上传的具体代码,供大家参考,具体内容如下 Android端: String fileName = tvFilename.getText().toString(); RequestBody description = RequestBody.create( okhttp3.MultipartBody.FORM, fileName); File fileImage = new File(saveFileName); RequestBody requestBody

  • bootstrap fileinput组件整合Springmvc上传图片到本地磁盘

    整合前的准备步骤 1.搭建好基础框架,本文用的是SSM(Spring+SpringMVC+Mybatis),这里的过程就不在本文中讲了,之前我做个一个demo(ssm整合+用户模块),可以参考这个搭建好. 2.下载bootstrap fileinput组件源码: https://github.com/kartik-v/bootstrap-fileinput/ 搭建后的效果图 图1. 图2. 图3. 图4. 图5. 在需要编写的jsp页面引入组件 本工程的路径界面如下: 在jsp引入组件需要的js

  • SpringMvc MultipartFile实现图片文件上传示例

    整理文档,搜刮出一个SpringMvc MultipartFile实现图片文件上传示例,稍微整理精简一下做下分享. spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver&qu

  • springMVC图片上传的处理方式详解

    本文实例为大家分享了springMVC图片上传的处理方式,供大家参考,具体内容如下 首先需要依赖的jar包: <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>

  • spring mvc+localResizeIMG实现HTML5端图片压缩上传

    最近在做一个移动端HTML5的应用,使用到了上传功能,起初使用传统的上传方式上传手机拍照的照片,由于手机拍照出来的照片一般都是好几MB,所以上传速度是非常慢的. 在网上找了很久找到了localResizeIMG压缩框架,感觉非常的实用,所以在此分享给大家. 第一步:下载localResizeIMG localResizeIMG放在github中的,地址是:https://github.com/think2011/localResizeIMG. 第二步:在web工程中导入localResizeIM

  • SpringMVC中MultipartFile上传获取图片的宽度和高度详解

    SpringMVC一般使用MultipartFile来做文件的上传,通过MultipartFile的getContentType()方法判定文件的类型(MIME) ".doc":"application/msword" ".jpg":"image/jpeg" ".jpeg":"image/jpeg" ".png":"image/png" -. 有时

  • 详解SpringMVC实现图片上传以及该注意的小细节

    先附上图片上传的代码 jsp代码如下: <form action="${path}/upload/uploadPic.do" method="post" enctype="multipart/form-data"> <div> ![](${path}/mall/image/load_image.png) <input type="file" id="input-image" n

  • 详解PHP素材图片上传、下载功能

    这里的下载是生成 zip 包进行下载,所以需要 PHP 的ZipArchive ()类,使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释.并且不包括 oss 之类的三方 上传 上传就很简单了,PHP 自带的 move_uploaded_file()函数就可以使用我们简单的文件上传了. 我们只需要把文件的路径存到数据库方便我们下载或展示时使用就 OK了. 这里需要注意上传的路径和文件名尽量不要包括中文. 下载 下载文件我们需要临时生成一个服务器的 zip 包,

  • 详解PHP使用OSS上传文件

    目录 一.安装阿里云 oss sdk 二.使用 1.获取 OSS AccessKeyId.AccessKeySecret 2.简易上传 Html 处理 3.控制器处理 OssImageController.php  4.service层处理 OssImageService.php 5.oss 实例及参数获取封装 AliOss.php 6.结果是可以上传成功 三.问题说明 一.安装阿里云 oss sdk 在网站根目录执行下面命令,安装oss sdk. composer require aliyun

  • webuploader+springmvc实现图片上传功能

    本文为大家分享了webuploader springmvc实现图片上传的具体代码,供大家参考,具体内容如下 jsp文件 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&qu

  • 详解Vue ElementUI手动上传excel文件到服务器

    概述 具体需求场景如下: 选择excel文件后,需要把导入的excel文件手动上传到后台服务器,并将导入成功后的统计结果显示出来.官网也有手动上传的示例,通过 action="url" 传入地址的方式,但在实际项目中请求需要自己配置,下面具体说明实现的方法. 说明: 在上传文件到展示统计结果,我们后端给了两个接口:首先调用文件上传接口,上传成功后,根据后端返回的mark再调用统计结果接口. 属性设置 .vue文件 <el-row> <div class="e

  • 详解SpringBoot下文件上传与下载的实现

    SpringBoot后台如何实现文件上传下载? 最近做的一个项目涉及到文件上传与下载.前端上传采用百度webUploader插件.有关该插件的使用方法还在研究中,日后整理再记录.本文主要介绍SpringBoot后台对文件上传与下载的处理. 单文件上传 / 单文件上传 @RequestMapping(value = "/upload") @ResponseBody public String upload(@RequestParam("file") Multipart

  • 详解jQuery uploadify文件上传插件的使用方法

    uploadify这个插件是基于js里面的jquery库写的.结合了ajax和flash,实现了这个多线程上传的功能. 现在最新版为3.2.1. 在线实例 实例中用到的php文件UploaderDemo.php请在页面下方下载 引入文件 <link rel="stylesheet" type="text/css" href="uploadify.css" /> <script type="text/javascript

  • 详解spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子. 这有几个需要注意的地方 1.form的enctype="multipart/form-data" 这个是上传文件必须的 2.applicationContext.xml中 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 关于

  • 详解Python下ftp上传文件linux服务器

    模块介绍: from ftplib import FTP ftp = FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2 显示详细信息 ftp.connect("IP", "port") #连接ftp, IP和端口 ftp.log("user", "password") #连接的用户名.密码 ftp.cwd(pathname) #设置FTP当前操作的路径 ftp.dir() #显示目录下的文件

  • springmvc图片上传及json数据转换过程详解

    springmvc的图片上传 1.导入相应的pom依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> 2.添加springmvc-servlet.xml里面的配置 <bean id=&q

随机推荐