java实现简单图片上传下载功能

本文实例为大家分享了java实现简单图片上传下载的具体代码,供大家参考,具体内容如下

1.首先在上传图片界面:将form表单的enctype改为:multipart/form-data

2.定义一个实体类用来将存放图片存放的路径存入到mysql中private String imgpath;

3.在spring容器中注入处理图片的解析器

<bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <!-- 设置默认编码 -->
    <property name="defaultEncoding" value="utf-8"></property>
    <!-- 上传图片最大大小5M-->
    <property name="maxUploadSize" value="5242440"></property>
</bean>

4.在controller层接收的时候需要用 @RequestParam("file") CommonsMultipartFile file来接收,如果是多个图片就是@RequestParam("file") CommonsMultipartFile[] files来接收

5.通过工具类处理返回要存入实体类的图片的路径

public class FileUpUtil {

 /**
 * 上传多个文件或图片上传在项目路径下的img文件夹在
 * !!!!!!重新部署项目实效,因为文件夹被删除
 * @param files
 * @param request
 * @return
 */
 public static List<String> upfiles(CommonsMultipartFile files[],HttpServletRequest request){
  List<String> list = new ArrayList<String>();
     // 获得项目的路径
     ServletContext sc = request.getSession().getServletContext();
     // 上传位置
     String path = sc.getRealPath("/img") + File.separatorChar; // 设定文件保存的目录
     File f = new File(path);
     if (!f.exists())
       f.mkdirs(); 

     for (int i = 0; i < files.length; i++) {
       // 获得原始文件名
       String fileName = files[i].getOriginalFilename();
       System.out.println("原始文件名:" + fileName);
       // 新文件名
       String newFileName = UUID.randomUUID() + fileName;
       if (!files[i].isEmpty()) {
         try {
           FileOutputStream fos = new FileOutputStream(path
               + newFileName);
           InputStream in = files[i].getInputStream();
           int b = 0;
           while ((b = in.read()) != -1) {
             fos.write(b);
           }
           fos.close();
           in.close();
         } catch (Exception e) {
           e.printStackTrace();
         }
       }
       System.out.println("上传图片到:" + path + newFileName);
       list.add("img/"+newFileName);
     }
     return list;
 }
 /**
 * 上传一个文件或图片
 * 上传多个文件或图片上传在项目路径下的img文件夹在
 * !!!!!!重新部署项目实效,因为文件夹被删除
 * @param file
 * @param request
 * @return
 */
 public static String upfile(CommonsMultipartFile file,HttpServletRequest request){
  // 获得项目的路径
    ServletContext sc = request.getSession().getServletContext();
    // 上传位置
    String path = sc.getRealPath("/img") + File.separatorChar; // 设定文件保存的目录
    File f = new File(path);
    if (!f.exists())
      f.mkdirs();
      // 获得原始文件名
      String fileName = file.getOriginalFilename();
      System.out.println("原始文件名:" + fileName);
      // 新文件名
      String newFileName = UUID.randomUUID() + fileName;
      if (!file.isEmpty()) {
        try {
          FileOutputStream fos = new FileOutputStream(path
              + newFileName);
          InputStream in = file.getInputStream();
          int b = 0;
          while ((b = in.read()) != -1) {
            fos.write(b);
          }
          fos.close();
          in.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
      System.out.println("上传图片到:" + path + newFileName);
      return "img/"+newFileName;
 }

 /**
 * 下载
 * @param request
 * @param response
 * @param filename
 * @return
 */
 public static void downFile(HttpServletRequest request,
      HttpServletResponse response,String filename) {
    // 得到要下载的文件名
    String fileName = filename.substring(4);
    try {
      fileName = new String(fileName.getBytes("iso8859-1"), "UTF-8");
      // 获取上传文件的目录
      ServletContext sc = request.getSession().getServletContext();
      // 上传位置
      String fileSaveRootPath = sc.getRealPath("/img");  

      System.out.println(fileSaveRootPath + "\\" + fileName);
      // 得到要下载的文件
      File file = new File(fileSaveRootPath + "\\" + fileName); 

      // 如果文件不存在
      if (!file.exists()) {
        request.setAttribute("message", "您要下载的资源已被删除!!");
        System.out.println("您要下载的资源已被删除!!");
        return ;
      }
      // 处理文件名
      String realname = fileName.substring(fileName.indexOf("_") + 1);
      // 设置响应头,控制浏览器下载该文件
      response.setHeader("content-disposition", "attachment;filename="
          + URLEncoder.encode(realname, "UTF-8"));
      // 读取要下载的文件,保存到文件输入流
      FileInputStream in = new FileInputStream(fileSaveRootPath + "\\" + fileName);
      // 创建输出流
      OutputStream out = response.getOutputStream();
      // 创建缓冲区
      byte buffer[] = new byte[1024];
      int len = 0;
      // 循环将输入流中的内容读取到缓冲区当中
      while ((len = in.read(buffer)) > 0) {
        // 输出缓冲区的内容到浏览器,实现文件下载
        out.write(buffer, 0, len);
      }
      // 关闭文件输入流
      in.close();
      // 关闭输出流
      out.close();
    } catch (Exception e) {
    }
  }
}

6.存入之后在jsp页面通过img标签显示<img alt="img" src="https://数据库中存入的路径"  width="100">

7.下载就是将图片的路径传入controller层中一个方法,调用工具类中的downFile方法,就可以了。

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

(0)

相关推荐

  • java实现文件上传下载和图片压缩代码示例

    分享一个在项目中用的到文件上传下载和对图片的压缩,直接从项目中扒出来的:) 复制代码 代码如下: package com.eabax.plugin.yundada.utils; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.

  • 微信 java 实现js-sdk 图片上传下载完整流程

    最近做的一个项目刚好用到微信js-sdk的图片上传接口,在这里做一下总结. 在这里能知道使用js api的基本配置 https://mp.weixin.qq.com/wiki t=resource/res_main&id=mp1421141115&token=&lang=zh_CN 我这里没有用checkJsApi去判断当前客户端版本是否支持指定JS接口,好.通过看开发文档,我们知道调用js接口直接都要通过config接口注入权限验证配置 <code class="

  • Java+mysql本地图片上传数据库及下载示例

    做一个将本地图片上传到mysql数据库的小实例,顺便也下载下来到桌面检测是否上传成功. 在写代码之前得先在数据库中建立image表,用来存储图片. create table image (id int primary key auto_increment , name varchar(30) COMMENT '名称', content mediumblob COMMENT '图片'); 下面直接上代码: package jdbc_imagetest; import java.io.*; impo

  • java实现简单图片上传下载功能

    本文实例为大家分享了java实现简单图片上传下载的具体代码,供大家参考,具体内容如下 1.首先在上传图片界面:将form表单的enctype改为:multipart/form-data 2.定义一个实体类用来将存放图片存放的路径存入到mysql中private String imgpath; 3.在spring容器中注入处理图片的解析器 <bean name="multipartResolver" class="org.springframework.web.multi

  • Java操作FTP实现上传下载功能

    目录 FTP简介 FTP架构 FTP数据连接模式 用户认证 客户端 Vsftp安装与配置 启动服务 配置文件说明 传输模式配置 系统用户配置 java操作ftp文件服务器 1.引入依赖 2.提供接口 3.对提供操作ftp接口进行实现 4.配置ftp相关参数 5.写测试controller FTP简介 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层,TCP 模型的第四层, 即应用层, 使用 TCP 传输而

  • java基于servlet编写上传下载功能 类似文件服务器

    本人闲来无事,写了个servlet,实现上传下载功能.启动服务后,可以在一个局域网内当一个小小的文件服务器. 一.准备工作 下载两个jar包: commons-fileupload-1.3.1.jar commons-io-2.2.jar 二.创建一个web工程 我的工程名叫:z-upload 三.配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="ht

  • java实现ftp文件上传下载功能

    本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下 package getUrlPic; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org

  • FasfDFS整合Java实现文件上传下载功能实例详解

    在上篇文章给大家介绍了FastDFS安装和配置整合Nginx-1.13.3的方法,大家可以点击查看下. 今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</arti

  • .Net Core实现图片文件上传下载功能

    当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. 一.开发环境 毋庸置疑,宇宙第一IDE VisualStudio 2017 二.项目结构 FilesController 文件上传下载控制器 PictureController 图片上传下载控制器 Return_Helper_DG 返回值帮助类 三.关键代码 1.首先我们来看Startup.cs

  • 基于Java文件输入输出流实现文件上传下载功能

    本文为大家分享了Java实现文件上传下载功能的具体代码,供大家参考,具体内容如下 前端通过form表单的enctype属性,将数据传递方式修改为二进制"流"的形式,服务端(servlet)通过  getInputStream() 获取流信息, 运用java I/O 流的基础操作将流写入到一个服务端临时创建的文件temp中,然后再次利用文件基本操作,读取并截取临时文件内容,根据其中信息创建相应的文件,将读取出来的具体信息写入,下载时,根据提交的文件名称,找到服务器端相应的文件,然后根据输

  • Java实现七牛云文件图片上传下载

    目录 一.准备工作 1.1.为什么选择七牛云? 1.2.七牛云注册 二.java操作七牛云对象存储下载 2.1.pom.xml引入依赖 2.2.上传下载具体代码 三.具体业务例子(七牛云做图片服务器–SpringBoot) 四.总结 一.准备工作 1.1.为什么选择七牛云? 免费 免费 免费 而且注册之后每个月 有免费100 万 次get请求. 10G免费空间,10G免费流量,对于搭建自己的博客网站已经绰绰有余了. 1.2.七牛云注册 注册七牛云账号 获取自己的AK,SK: 二.java操作七牛

  • java中struts2实现文件上传下载功能实例解析

    本文实例讲述了java中struts2实现文件上传下载功能实现方法.分享给大家供大家参考.具体分析如下: 1.文件上传 首先是jsp页面的代码 在jsp页面中定义一个上传标签 复制代码 代码如下: <tr>      <td align="right" bgcolor="#F5F8F9"><b>附件:</b></td>      <td bgcolor="#FFFFFF">

随机推荐