• Spring文件下载与上传 FormData


    Spring实现文件的上传与下载

    文件上传可以使用FormData
    前端实现代码:使用表单进行提交

    <form class="form-horizontal" method="post" id="uploadFileForm"
    enctype="multipart/form-data" onkeydown="if(event.keyCode==13){return false;}">
    <div class="form-group">
    <label class="col-xs-3 control-label">选择上传文件</label>
    <div class="col-xs-9">
    <div class="input-group file-caption-main">
    <div tabindex="500" class="form-control file-caption kv-fileinput-caption">
    <div class="file-caption-name"></div>
    </div>
    <div class="input-group-btn">
    <div tabindex="500" class="btn btn-primary btn-file">
    <i class="glyphicon glyphicon-folder-open"></i>
    <span class="hidden-xs">浏览 …</span>
    <input class="form-control projectfile" type="file">
    </div>
    </div>
    </div>
    </div>
    </div>
    <input type="hidden" name="containerName" id="containerName" value="${containerName!}">
    <input type="hidden" name="namespace" id="namespace" value="${namespace!}">
    </form>



    js部分代码(使用ajax进行文件的上传)
    $.ajax({
    url : '',
    dataType : 'json',
    data : form,
    type : 'POST',
    processData : false, // 告诉jQuery不要去处理发送的数据
    contentType : false,
    success : function(result){
    。。。。。。。。。。。。。。

    其中的data:
    var form = new FormData();
    var fileObj = document.getElementById("uploadFileName").files[0];
    var fileName = $("#fileName").val();//文件的名字
    var containerName = $("#containerName").val();
    var namespace = $("#namespace").val();
    form.append("file", fileObj);
    form.append("fileName", fileName);

    后台接收代码
    /**
    * 文件上传
    *
    */
    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    @ResponseBody
    public ResponseData<String> upload(HttpServletRequest request,
    @RequestParam("file") CommonsMultipartFile file, String fileName) {
    //可以对file进行一些列的操作,以后的细化可以在service层进行操作
    //下面列举一些常见的操作
    file.getOriginalFilename();
    file.getName();
    file.getBytes();
    file.getContentType();
    file.getSize();
    file.isEmpty()

    //文件的保存
    String filePath = "D:\file emp";
    File fileTemp = new File(filePath);
    //临时存放的路径不存在情况下 创建路径
    if(!fileTemp.exits()) {
    fileTemp.mkdirs();
    }
    file.transferTo(fileTemp);
    return data;
    }


    文件的下载
    这里面可以使用:①<a href="${baseUrl}/file/download"/>
    ②使用ifream
    这里介绍的使用第二种的方法
    <iframe id="iframeForDownload" style="display:none" width="0" height="0"></iframe>

    点击事件之后可以设置:$("#iframeForDownload").src=baseUrl+"/file/download";

    后台代码
    /**
    *文件下载
    *
    */
    @RequestMapping(value = "/download", method = RequestMethod.GET)
    public void download(HttpServletRequest request, HttpServletResponse response, @RequestParam String containerPath,
    @RequestParam String uuid) {
    File file = new File("E:\file\ emp\name.jpg");
    OutputStream out = null;
    InputStream in = null;
    if (null != file && file.length() > 0) {
    try {
    String fileName = URLEncoder.encode("name.jpg", "UTF-8");
    response.setContentType("multipart/form-data");
    response.setHeader("Content-disposition", "attachment;filename=" + fileName);
    response.addHeader("Pragma", "no-cache");
    response.addHeader("Cache-Control", "no-cache");
    response.addDateHeader("Expries", 0);
    in = new FileInputStream(file);
    out = response.getOutputStream();
    StreamUtils.copy(in, out);
    } catch (Exception e) {
    LOGGER.error("Container file download error:", e);
    } finally {
    try {
    in.close();
    out.close();
    } catch (Exception e) {
    ......
    }
    }
    }
    }

  • 相关阅读:
    029- 位运算符
    028- 三目运算符
    027- 字符串链接运算符
    026- 布尔运算符
    lucene 结合数据库做搜索
    JDK 1.8判断集合种的元素是否存在相同
    Springboot 集成jpa使用
    json 的使用 Java对象转json
    Java 短信发送
    1 eclipse 离线安装activiti插件
  • 原文地址:https://www.cnblogs.com/licunzhi/p/7416356.html
Copyright © 2020-2023  润新知