文件 上传 下载

            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-3">请选择上传文件:</label>
##                <br/>
                <div id="container" class="formControls col-xs-3 col-sm-3" >
                    <input type="file" id="selectfiles" name="selectfiles" ></input>
                    <button id="btnfile"  name ="btnfile"   class='btn'>提交</button>
##                    <a id="postfiles" href="javascript:void(0);" class='btn'>开始上传</a> οnclick="choose(this)"
                </div>
                <label id="console"></label>
            </div>

 

$("#btnfile").click(function (){
    var myfile = document.getElementById("selectfiles").files[0];

    var formData = new FormData();
    formData.append('fileUpload',myfile);

    $.ajax({
        type: 'POST',
        url: '/xqjr/website/file/fileUpload',
        data:formData,
        processData:false,
        contentType:false,
        success: function(data){
            // alert("1111111");
        },
        error:function(data) {
            console.log(data.msg);
        },
    });
})
  /**
     * 实现文件上传
     * */
    @RequestMapping(value = "/fileUpload",method = RequestMethod.POST)
    @ResponseBody
    public ResultDO fileurl(@RequestParam("fileUpload") MultipartFile fileUpload,HttpSession session ){
        ResultDO resultDO = new ResultDO();
        if(fileUpload.isEmpty()){
            resultDO.setCode(StatusCode.HTTP_FAILURE);
            resultDO.setMsg("上传文件不能为空");
            return null;
        }
        //获取文件名称
        String fileName = fileUpload.getOriginalFilename();
        session.setAttribute("filename",fileName);
        //文件大小
        int size=(int) fileUpload.getSize();
        System.out.println(fileName+"cxvcv"+size);

        String suffix = fileName.substring(fileName.lastIndexOf(".")+1);//后缀

//        本地路径
        String savaPath="E:/test";
        File filesave = new File(savaPath);
        //判断上传文件的保存目录是否存在
        if (!filesave.exists() && !filesave.isDirectory()) {
            //创建目录
            filesave.mkdirs();
        }
        String fileurl=savaPath;

        try {
//            //获取item中的上传文件的输入流
            InputStream in = fileUpload.getInputStream();
            //创建一个文件输出流
            FileOutputStream out = new FileOutputStream("E:/test/"+fileName);
            //创建一个缓冲区
            byte buffer[] = new byte[1024];
            //判断输入流中的数据是否已经读完的标识
            int len = 0;
            //循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
            while((len=in.read(buffer))>0){
                //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
                out.write(buffer, 0, len);
            }
            //关闭输入流
            in.close();
            //关闭输出流
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
            resultDO.setCode(StatusCode.HTTP_FAILURE);
            resultDO.setMsg("上传失败");
            return null;
        }
     
        resultDO.setData("上传成功");
        return resultDO;
    }

下载

 

<a style="text-decoration:none" class="ml-5"   href="/xqjr/website/download/file?id=${file.id}" title="下载">下载</a>

 

/**
 * 下载文件
 * @return
 */
@RequestMapping(value = "/file",method = RequestMethod.GET)
@ResponseBody
public ResultDO file(int id, HttpServletRequest request, HttpServletResponse resp) throws IOException {
    ResultDO resultDO=new ResultDO();
    //根据文件id提取文件信息
    FileDO fileDO=fileService.select(id);
    System.out.println("文件信息"+fileDO);
    //获取文件路径
    String filename=fileDO.getFileurl();

    //获取文件路径
    String fileurl=fileDO.getFileurl();
    //截取文件名
    String sb=filename;
    String a= sb.substring(8);

    FileInputStream input = new FileInputStream(fileurl);
    //设置响应头,对文件进行url编码
    filename = URLEncoder.encode(a, "UTF-8");
    resp.setHeader("Content-Disposition", "attachment;filename="+filename);
    resp.setContentLength(input.available());

    ServletOutputStream output = resp.getOutputStream();
    IOUtils.copy(input,output);
    input.close();
    resultDO.setData("下载");

    return resultDO;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值