ssm上传和下载

配置pom.xml文件

<!-- 文件上传 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

配置springmvc.xml文件

<!-- 文件上传 -->
<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 上传文件大小限制10M -->
    <property name="maxUploadSize">
        <value>10485760</value>
    </property>
    <!-- 请求的编码格式, 和 jsp 页面一致 -->
    <property name="defaultEncoding">
        <value>UTF-8</value>
    </property>
</bean>

controller层

@RequestMapping("/uploadFile")
@ResponseBody
public String uploadFile(@RequestParam("uploadFile") MultipartFile uploadFile, HttpServletRequest req) {
    System.out.println("springmvc文件上传。。。。");
    //获取原始文件名称
    String originalFileName = uploadFile.getOriginalFilename();
    System.out.println(originalFileName);
    //存储文件的文件夹名称
    String upload = req.getServletContext().getRealPath("upload");
    System.out.println(upload);
    //目的仓库在项目之外
    //String upload = "D:\\upload";
    //与目的地建立连接
    File file = new File(upload);
    if (!file.exists()) {
        file.mkdirs();
    }
    //获取文件后缀
    String suffix = originalFileName.substring(originalFileName.lastIndexOf(".", originalFileName.length()));
    String filename = upload.concat(File.separator).concat(UUID.randomUUID().toString()).concat(suffix);
    System.out.println(filename);
    try {
        uploadFile.transferTo(new File(filename));
        return originalFileName;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
​
/*
 * 文件下载
 * */
@RequestMapping("/download")
public ResponseEntity<byte[]> download(HttpServletRequest req, String filename) {
    //文件地址在项目内部的(目的地址信息)
    String upload = req.getServletContext().getRealPath("upload");
    //目的仓库在项目之外
    //String upload = "D:\\upload"
    //先拼接具体的位置路径,然后通过file进行建立连接
    File file = new File(upload + File.separator + filename);
    if (!file.exists()) {//如果不存在文件,直接返回null
        return null;
    }
    try {
        //创建标头文件对象
        HttpHeaders headers = new HttpHeaders();
        ;
        //解决乱码问题
        String downloadfile = new String(filename.getBytes(StandardCharsets.UTF_8), "iso-8859-1");
        //以下载的方式打开文件
        headers.setContentDispositionFormData("attachment", filename);
        //二进制流
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

页面html ajax提交二种方式 form

上传文件
<form action="/uplaod/uploading" method="post" enctype="multipart/form-data">
       文件: <input type="file" name="uploadFile">
      <input type="submit" value="提交">
</form>
<!--文件上传-->
$('#btn').click(function () {
    var formdata = new FormData();
    formdata.append('uploadFile', $('#uploadFile')[0].files[0]);
    $.ajax({
        url: '/uploadFile',
        type: 'post',
        contentType: false,
        processData: false,
        data: formdata,
        success: function (data) {
            console.log(data)
            document.getElementById("uuFile").value = data;
        }
    })
});
<div class="layui-form-item">
        <label class="layui-form-label">文件名称:</label>
        <div class="layui-input-inline layui-col-md4">
            <input type="file" name="filenames" id="uploadFile" required lay-verify="required" placeholder="文件名称"
                   autocomplete="off" class="layui-input">
            <input type="text" name="filename" id="uuFile" required lay-verify="required" placeholder="文件名称"
                   autocomplete="off" class="layui-input">
        </div>
        <button type="button" class="layui-btn" id="btn">浏览文件</button>
    </div>
<!--下载--> 
if (obj.event === 'detail') {
                alert(11);
                $.ajax({
                    type: "POST",
                    url: "/download",
                    data: {filename: data.filename},
                    dataType: "json",
                    success: function (da) {
                        console.log(da)
                    }
                });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值