• 在项目中,上传文件一般是必不可少的,所以今天学到新的上传方式,就干脆将学习过的上传方式记录一下

    一、表单直接上传图片

  • 表单头要设置
    <form action="" method="post" enctype="multipart/form-data">
  • 元素
    <input type="file" name="dwfile" >
  • 后端代码

    @RequestMapping(value="addDownload",method=RequestMethod.POST)
    public String addDownload(HttpServletRequest request,Model model,download download)throws Exception{
    log.info("上传文件");
    try{
    String fileName = download.getDwfile().getOriginalFilename();
    System.out.println("原始文件名:" + fileName);
    // 新文件名
    //String newFileName = UUID.randomUUID() + fileName;
    // 获得项目的路径
    ServletContext sc = request.getSession().getServletContext();
    // 上传位置
    String path = sc.getRealPath("/upload") + "/"; // 设定文件保存的目录
    System.out.println(path);
    File f = new File(path);
    if (!f.exists())
    f.mkdirs();
    if (!download.getDwfile().isEmpty()) {
    FileOutputStream fos = new FileOutputStream(path + fileName);
    InputStream in = download.getDwfile().getInputStream();
    int b = 0;
    while ((b = in.read()) != -1) {
    fos.write(b);
    }
    fos.close();
    in.close();
    }
    download.setDwFile(fileName);
    downloadService.insertSelective(download); }catch(Exception e){
    System.out.println(e);
    }
    return "redirect:showDownload";
    }

    二、使用ajax上传

  • 1.通过jquery的插件jquery.form.js

  • jsp页面代码
    <form id="form111" name="form111" action="${path }/brand/addBrand.do" method="post" enctype="multipart/form-data">
    <input type='file' size='27' id='imgsFile' name='imgsFile' class="file" onchange='submitUpload()' />

  • js代码

    <script type="text/javascript" src="<c:url value='/{system}/res/js/jquery.form.js'/>"></script> 
    function submitUpload(){
    var option = { url:"{path}/upload/uploadPic.do",//如果不指定url那么就使用使用提交表单的url,如果指定就使用当前的url
    dataType:"text",
    success:function(responseText){
    var jsonObj = .parseJSON(responseText);("#imgsImgSrc").attr("src", jsonObj.realPath);
    $("#imgs").val(jsonObj.relativePath); },
    error:function(){
    alert("系统错误");
    }
    };
    $("#form111").ajaxSubmit(option); }
  • 后端接收
    @RequestMapping("/uploadPic.do")
    public void uploadPic(HttpServletRequest request, Writer out) throws IOException{
    //把request转换成复杂request
    MultipartHttpServletRequest mr = (MultipartHttpServletRequest) request;
    //获得文件
    Map<String, MultipartFile> map = mr.getFileMap();
    Set<String> set = map.keySet();
    Iterator<String> it = set.iterator();
    String fileInputName = it.next();
    MultipartFile mf = map.get(fileInputName);
    //获得文件的字节数组
    byte [] bs = 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 realPath = ECPSUtils.readProp("file_path")+"/upload/"+fileName+suffix;
    //获得相对路径(存储在数据库)
    String relativePath = "/upload/"+fileName+suffix;
    //创建jersy的客户端
    Client client = Client.create();
    //创建web资源对象
    WebResource wr = client.resource(realPath);
    //上传
    wr.put(bs);
    JSONObject jo = new JSONObject();
    jo.accumulate("realPath", realPath);
    jo.accumulate("relativePath", relativePath);
    String result = jo.toString();
    out.write(result);
    }

    2.使用FormData对象

  • 这种还没有使用过,以后研究

    ajax基本使用json数据

ssm项目中常用的上传文件的更多相关文章

  1. SSM框架中如何简便上传文件表单

    此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...

  2. JavaWeb项目中使用ajax上传文件

    1.jsp $("#cxsc").click(function(){ var bankId = $("#bankId").val(); var formdata ...

  3. asp.net中FileUpload得到上传文件的完整路径

    asp.net中FileUpload得到上传文件的完整路径 Response.Write("完整路径:" + Server.MapPath(FileUpload1.PostedFi ...

  4. Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)

    Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...

  5. javaWeb开发中关于eclipse等ide重新部署或重启项目等原因造成上传文件丢失问题解决方案

    在开发项目时,有时候需要用到上传功能,比如头像上传等,其文件会保存到服务器中.但是我发现在用eclipse做项目的过程中,每次重新部署项目,原来上传的文件就会丢失. 其原因是因为每次项目修改后,ecl ...

  6. shell中利用ftp 上传文件夹功能

    我们知道ftp 只能用来上传或者下载文件,一次单个或者多个,怎么实现将文件夹的上传和下载呢? 可以利用先在remote ip上建立一个相同的文件夹目录,然后将文件放到各自的目录中去 1.循环遍历出要上 ...

  7. Spring中servletFileUpload完成上传文件以及文本的处理

    JSP: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...

  8. Linux中ftp不能上传文件/目录的解决办法

    在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法   在排除用户组和权限等问题后,最可能引 ...

  9. 使用PuTTY在Windows中向Linux上传文件

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3843207.html ...

随机推荐

  1. 第02章_MySQL环境搭建

    第02章_MySQL环境搭建 1. MySQL的卸载 步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务.按键盘上的"Ctrl + Alt + Delete"组合 ...

  2. 六、Java API操作zookeeper节点

    目录 前文 pom.xml文件增加依赖 新建java文件:ZookeeperTest GitHub文件下载 前文 一.CentOS7 hadoop3.3.1安装(单机分布式.伪分布式.分布式 二.JA ...

  3. C/C++ Qt Dialog 对话框组件应用

    在Qt中对话框分为两种形式,一种是标准对话框,另一种则是自定义对话框,在一般开发过程中标准对话框使用是最多的了,标准对话框一般包括 QMessageBox,QInputDialog,QFileDial ...

  4. Kubernetes(K8s)极速入门

    1. 概述 老话说的好:努力学习,努力提高,做一个有真才实学的人. 言归正传,之前我们聊了 如何使用国内的镜像源搭建 kubernetes(k8s)集群 ,今天我们来聊聊如何在 kubernetes( ...

  5. 洛谷 P5233 - [JSOI2012]爱之项链(Polya 定理+递推)

    洛谷题面传送门 首先很明显题目暗示我们先求出符合条件的戒指数量,再计算出由这些戒指能够构成的项链的个数,因此考虑分别计算它们.首先是计算符合条件的戒指数量,题目中"可以通过旋转重合的戒指视作 ...

  6. 【2020五校联考NOIP #2】矩阵

    咕咕咕到现在~ 题面传送门 题意: 给出一个 \(n\times n\) 的矩阵 \(A\).要你求有多少个 \(n\times n\) 的矩阵 \(B\) 满足: 每一行都是 \(1\) 到 \(n ...

  7. 【低门槛 手把手】python 装饰器(Decorators)原理说明

    本文目的是由浅入深地介绍python装饰器原理 装饰器(Decorators)是 Python 的一个重要部分 其功能是,在不修改原函数(类)定义代码的情况下,增加新的功能 为了理解和实现装饰器,我们 ...

  8. 有限元边界 Dirichlet 条件处理

    参考自百度文档,这里只考虑 Dirichlet 边界条件情况. 有限元法基本方法就是是构造线性方程组 \[\begin{equation} Au = f \end{equation}\] 进行求解.其 ...

  9. 金蝶EAS——登录某个数据中心门户时报错“获取用户相关信息失败!请查看服务器日志,并确认是否数据库设置错误或者版本不匹配!”

    登录服务器后台,查看金蝶BOS控制台,选择数据中心中的目标数据中心,点击测试连接,提示报错如下: 说明是数据库问题,需要登录数据库服务器去检查数据库.详细操作见:

  10. 48-Merge Sorted Array

    $88. Merge Sorted Array My Submissions QuestionEditorial Solution Total Accepted: 98885 Total Submis ...