ssm项目中常用的上传文件

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

    一、表单直接上传图片

  • 表单头要设置

    <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数据

原文地址:https://www.cnblogs.com/StudyZhh/p/10389879.html

时间: 2024-10-13 04:59:37

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

Spring 中Apache Commons上传文件

在用Apache Commons完成文件上传功能需有的几步: 1.导入两个架包:commons-fileupload.jar和commons-io.jar maven中: 1 <dependency> 2 <groupId>commons-fileupload</groupId> 3 <artifactId>commons-fileupload</artifactId> 4 <version>1.3</version> 5

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

在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法 在排除用户组和权限等问题后,最可能引起ftp下文件无法上传并经常被忽略的因素就是硬盘空间已满,而导致硬盘空间满的问题多数是日志文件所占用的,例如mysql的日志会在不知不觉中变得十分庞大,直至占满剩余的硬盘空间. 解决办法: 1.定期手动清理或使用脚本清理mysql日志或其他相关日志文件. 2.关闭mysql日志(不推荐) 上面是空间有问

本地虚拟机中匿名ftp上传文件失败的问题

在10.10.50.230中新建了一个匿名的ftp服务器,结果在10.10.50.241中上传文件时提示: local: README.txt remote: /var/ftp/pub/upload 227 Entering Passive Mode (10,10,50,230,117,8). 553 Could not create file.   由于搭建步骤是完全按照标准文档建立的,vsftp.conf的设置应该没有问题,检查:getsebool -a|grep ftp 发现: allow

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

我们知道ftp 只能用来上传或者下载文件,一次单个或者多个,怎么实现将文件夹的上传和下载呢? 可以利用先在remote ip上建立一个相同的文件夹目录,然后将文件放到各自的目录中去 1.循环遍历出要上传的文件夹中的文件夹目录 2.遍历出每个文件夹下的文件 3.逐一上传文件 ftp 命令 图中有众多的交互,我们不想让他显示这些交互 可以使用参数 屏蔽掉 ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer

winform中进行post上传文件

winform中要上传文件到远程的服务器上面,我在本地用的是post方式传递数据,用的是HTTP协议,具体代码如下: 下面的代码就是一个上传的方法,参数需要路径和文件路径就可以了,我本地winform只需要提交post请求就可以了,止于对于post请求如何处理,那就是远程服务端的事情了. private string uploadFile(string uriAddress, string uploadfilePath) { HxSpecCore.SpectrumSet ss = new Spe

webuploader项目中多图片上传实例

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title> 百度uploader Demo</title> <!--引入CSS--> <link rel="stylesheet" type="t

Servlet中服务器端接收上传文件操作

最近老大分了一个任务,客户端使用C#实现了文件上传,要求我实现服务器端的文件接收保存到本地并且接收成功返回给客户端一个标识.在网上看了一下,大多数都是客户端的文件上传操作,很少有写服务端的处理,借此次机会,分享一下自己在服务端实现的处理逻辑.废话不多说,直接上代码 public class ReciveServlet extends HttpServlet { private static final long serialVersionUID = 1Lpublic ReciveServlet(

使用Jquery中ajax实现上传文件

html: <input type="file" name="uploadFile" id="uploadFile"> jq: $("#uploadFile").on("change", function() { var formData = new Formdata();                      // 创建一个form类型的数据 formData.append($("

win中使用curl上传文件报错

今天复现“WordPress插件Easy WP SMTP反序列化漏洞”时,需要使用curl上传文件,我又用的windows环境,一直出错 curl: (26) couldn't open file "D:/PyCharm/pocsuite3/pocsuite3/help/wordpress_unserialize.txt'" 最开始以为是权限问题 结果并不是 搞了很久 最后解决方案如下图 文件使用“”包含并用\转义 url http://xxx.ceye.io/ -F 'action=