html下载预览本地磁盘文件程序

最近项目用到html页面下载预览本地磁盘的需求,网上搜集了好多,没有具体并且能跑通的程序,这里贴出来跟大家分享

js

1.动态更改href 请求  实现更改文件名称

  var url="file/download?filePath="+entName+".pdf";
    url=encodeURI(url);
    url=encodeURI(url); 
    $("#xiazaipdfbtn").attr('href',url); 

      2.html

<a href="file/download?filePath=dinfo-boc.pdf" class="topalabe"  target="_blank"  id="xiazaipdfbtn">下载</a>

     3.java

package com.ultrapower.zq.iscloud.web.boc.controller.admin;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.ServletContextAware;


import com.ultrapower.zq.iscloud.web.boc.api.utils.ReadPropertity;


import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import java.io.*;


@Controller
public class FileController implements ServletContextAware{
    //Spring这里是通过实现ServletContextAware接口来注入ServletContext对象
    private ServletContext servletContext;
    @RequestMapping(value = "/views/admin/file/download", method = RequestMethod.GET)
    public void fileDownload(HttpServletRequest request, HttpServletResponse response){
        //获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载
        String filePath = request.getParameter("filePath");
//        filePath = java.net.URLDecoder.decode(filePath,"UTF-8");
        //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
        response.setContentType("multipart/form-data");
        //2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)
        response.setHeader("Content-Disposition", "attachment;fileName="+filePath);
        ServletOutputStream out;
        //通过文件路径获得File对象(假如此路径中有一个download.pdf文件)
        File file = new File(ReadPropertity.getProperty("python.path")+"\\DINFO-BOC.pdf");
        try {
            FileInputStream inputStream = new FileInputStream(file);


            //3.通过response获取ServletOutputStream对象(out)
            out = response.getOutputStream();


            int b = 0;
            byte[] buffer = new byte[1024];
            while ((b=inputStream.read(buffer))!=-1){
                //4.写到输出流(out)中
                out.write(buffer,0,b);
            }
            inputStream.close();
            out.close();
            out.flush();


        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void setServletContext(ServletContext servletContext) {
        this.servletContext = servletContext;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值