Ajax下载文件


<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<script type="text/javascript" src="js/jquery-3.4.0.js" ></script>
		<script type="text/javascript" src="js/jquery-3.4.0.min.js" ></script>
		<title></title>
	</head>
	<body>
		<a href="javascript:;" onclick="downloadFileName(this)">1565979955472.jpg</a></br>
		<a href="javascript:;" onclick="downloadFileName(this)">1565577591921.jpg</a></br>
		<a href="javascript:;" onclick="downloadFileName(this)">1565934399181.png</a></br>
	</body>
</html>

<script type="text/javascript">
    function downloadFileName(object) {
    	alert(111)
    	var filename = $(object).html();
    	alert(filename);
        var url = "http://localhost:8080/download";
        $.ajax({
            url: url,
            type: 'post',
            data: {
            	"filename":filename
            },
            success: function (result) {
            	var form = $('<form method="POST" action="http://localhost:8080/download">');
                 form.append($('<input type="hidden" name="filename" value="'+ filename +'">'));
                 $('body').append(form);
                 form.submit();
            },
            error:function(){
            	alert("下载失败");
            }
        });
    }
</script><!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<script type="text/javascript" src="js/jquery-3.4.0.js" ></script>
		<script type="text/javascript" src="js/jquery-3.4.0.min.js" ></script>
		<title></title>
	</head>
	<body>
		<a href="javascript:;" onclick="downloadFileName(this)">1565979955472.jpg</a></br>
		<a href="javascript:;" onclick="downloadFileName(this)">1565577591921.jpg</a></br>
		<a href="javascript:;" onclick="downloadFileName(this)">1565934399181.png</a></br>
	</body>
</html>

<script type="text/javascript">
    function downloadFileName(object) {
    	alert(111)
    	var filename = $(object).html();
    	alert(filename);
        var url = "http://localhost:8080/download";
        $.ajax({
            url: url,
            type: 'post',
            data: {
            	"filename":filename
            },
            success: function (result) {
            	var form = $('<form method="POST" action="http://localhost:8080/download">');
                 form.append($('<input type="hidden" name="filename" value="'+ filename +'">'));
                 $('body').append(form);
                 form.submit();
            },
            error:function(){
            	alert("下载失败");
            }
        });
    }
</script>
package com.ajax.upload.ajaxuploaddemo.testupload;

import com.alibaba.fastjson.JSONArray;
import org.apache.commons.io.IOUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * @program: ajax-upload-demo
 * @author: Mr.XueWeiDong
 * @create: 2019-08-18 08:42
 **/
@RestController
@CrossOrigin(allowCredentials="true", allowedHeaders="*")
public class Upload {

    @RequestMapping(value = "/upload",method = RequestMethod.POST)
    public Object upload(@RequestParam(value = "file_upload",required = true) MultipartFile file_upload){
        System.out.println("进入上传文件的方法");
        String name = file_upload.getOriginalFilename();
        System.out.println(name);
        Map map = new HashMap();
        map.put("name",name);
        map.put("isSuccess",true);
        map.put("data","");
        return map;
    }

    @RequestMapping(value="/download",method = RequestMethod.POST)
    public ResponseEntity<byte[]> download(HttpServletRequest request,
                                           @RequestParam("filename") String filename)throws Exception {
        System.out.println("进入下载东西的方法");
        //从前端获取文件名
        System.out.println(filename);
        String path="F:\\place\\statics\\PlacePicth";
        //拼接文件路径
        String pathAndFilename=path+"\\"+filename;
        System.out.println(pathAndFilename);
        //创建文件对象以供后面流传输
        File file=new File(pathAndFilename);
        byte body[]=null;
        ResponseEntity<byte[]> entity=null;
        try {
            //将文件读到byte数组
            InputStream input=new FileInputStream(file);
            body=new byte[input.available()];
            input.read(body);
            //定义http头 ,状态
            HttpHeaders header=new HttpHeaders();
            header.add("Content-Disposition", "attchement;filename=" + file.getName());
            HttpStatus statusCode = HttpStatus.OK;
            //定义ResponseEntity封装返回信息
            entity = new ResponseEntity<byte[]>(body, header, statusCode);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return entity;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值