Java实现文件的上传下载(含源代码和jar包)

1.需要使用的jar包

链接:https://pan.baidu.com/s/1IaxQRSwfzxDpe4w4JiaEKw
提取码:xwtz

2.如果想实现文件的下载,需要创建一张表,表的结构为

id url(id为查找依据,url为文件名即可)

2.文件的上传

该方法我是建立在SpringBoot框架中实现的,实际上这并不是必要的。

主要的是参数file是上传的文件信息,即路径相关。path的路径为获取的,使用与linux与windows系统,如果服务器固定,可以将path路径写成绝对路径。

上传之后需要将文件名存进数据库中,并且对应唯一的id方便下载使用。

后台

@RequestMapping("upload")
    public String testupload(@RequestParam("uploadfile") MultipartFile file,HttpServletRequest request) throws IllegalStateException, IOException{
        System.out.println("上传");
        if(!file.isEmpty()) {//上传文件路径
            String path = request.getSession().getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"testupload");        //path="H:"+File.separator+"Demo"; 如果写绝对路径可用这个path覆盖上边
            //上传文件名
            String filename = file.getOriginalFilename();
            File filepath = new File(path,filename);
            //判断路径是否存在,如果不存在就创建一个
            if (!filepath.getParentFile().exists()) {
                filepath.getParentFile().mkdirs();
            }
            //将上传文件保存到一个目标文件当中
            file.transferTo(new File(path + File.separator + filename));
            userService.insertFileByFileName(filename);  //将文件的名字存入数据库
            //输出文件上传最终的路径 测试查看
            return String.valueOf(file.getSize());
        } else {
            return "0";
        }
    }

前台

<form id="fileform" method="post" enctype="multipart/form-data">
<input type="file" id="fileupload" name="uploadfile"/>
<button id="upload_btn">上传文件</button>
</form>

$("#upload_btn").click(function(){
var form = new FormData(document.getElementById("fileform"));
    $.ajax({
        type:"post",
        url:"/user/upload",
        data:form,
        processData:false,
        contentType:false,
        dataType:‘text‘,
        success:function(data){
                alert(data);
        }
    });
});

3.文件的下载(注)

ids为传入的参数,为数据库中对应文件名的id,根据id查找到文件名,

path为上传的文件路径,然后将路径与文件名拼接输出路径即为下载路径。

注:下载的请求不能使用ajax,具体原因不清楚,我使用ajax多次尝试失败,改用a标签直接请求然后成功。

后台

@RequestMapping(value = "downloadfile",produces = "application/json;charset=utf-8")
    public void downloadlm(HttpServletRequest request,HttpServletResponse response,String ids,Model model) throws IOException {
        int id=Integer.parseInt(ids);
        System.out.println("进入下载文件");
        Myfile myFile = userService.selectFileById(id);

        String path = request.getSession().getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"testupload");
        path="H:"+File.separator+"Demo";
        String filename=myFile.getUrl().substring(myFile.getUrl().lastIndexOf("\\")+1);
        System.out.println(filename+"=======================================");
        File file = new File(path+File.separator+filename);
        System.out.println(file.getPath());
        //设置响应的头信息,解决文件名为中文乱码的问题
        response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(file.getName(), "utf-8"));
        //使用文件输入流读取下载文件信息
        FileInputStream in = new FileInputStream(file);
        //得到响应流中的输出流
        OutputStream out = response.getOutputStream();
        //建立一个缓存区
        byte[] buffer = new byte[1024];

        int len = 0;
        //把输入流中的数据通过循环写入到响应流中
        while((len = in.read(buffer)) > 0) {
            out.write(buffer,0,len);
        }

        in.close();
        out.close();

    }

前台:

<a id="down_file_btn"  href="/user/downloadfile?ids=1">下载</a>

原文地址:https://www.cnblogs.com/wys-373/p/11455839.html

时间: 2024-08-03 20:39:11

Java实现文件的上传下载(含源代码和jar包)的相关文章

Java通过FTP服务器上传下载文件的解决方案

对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar)基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见FileZilla Server安装配置教程.之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到F

文件的上传下载

文件的上传下载包括文件的上传和文件的下载两部分,下面以项目的形式给出,项目的结构如下图所示: 项目的思路如下: 1.启动项目,输入地址:http://localhost:8080/fileUpload/upload/upload.jsp,进入文件上传界面upload.jsp. 2.文件上传的路径是UploadHandleServlet,创建临时保存文件路径(在项目的根目录的web-inf下面):                                   D:\ruanjian\tomc

JAVAWEB之文件的上传下载

文件上传下载 文件上传: 本篇文章使用的文件上传的例子使用的都是原生技术,servelt+jdbc+fileupload插件,这也是笔者的习惯,当接触到某些从未接触过的东西时,总是喜欢用最原始的东西将他们表达出来.下面是具体的步骤,大家可以跟着我一步一步的用apache的fileupload插件来完成文件的上传下载. 1.创建一个web工程,我们这里取名为fileupload 2.导入相关jar包,,数据源使用的是apache-c3p0数据源,以及上传下载插件包,goson库,以及mysql驱动

HttpClient实现文件的上传下载

1 HTTP HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源. 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活.HttpClient 用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议. 一般的情况下我们都是使用Chrome或者

通过scp实现文件的上传下载

一.什么是scp? Scp 是SSH自带的一个内置命令,是安全拷贝的意思,可以实现文件的上传和下载,传输速率快,    安全性高. 二.通过scp实现文件的上传下载 1.  从服务器下载文件到本地 (1)不指定身份下载 例:下载服务器172.25.254.116的/home/student/test/QQ/12.txt到本地/home/kiosk/ 不指定身份下载默认以当前登陆用户下载,如果当前登陆用户对下载文件没有读写权限将不能下载 (2)指定身份下载 例:以root身份下载服务器172.25

asp.Net文件的上传下载(2) 转

Asp.net 上传.下载文件 2011-01-08 16:21:48|  分类: .NET |  标签: |举报 |字号大中小 订阅 首先我们要判断用户是否选择了要上传文件,我们可用下面这句实现: if(File1.PostedFile.ContentLength>0)  如果用户有上传的文件,则:   string name = File1.PostedFile.FileName ;//获取输入的文件名字      int i= name.LastIndexOf(".") ;

asp.net文件的上传下载

Web.Config 配置文件 <?xml version="1.0"?> <configuration> <appSettings>    <add key="FileUploadPath" value="Upload/" />    <add key="FileTypeLimit" value=".zip,.rar,.dox,.ppt,.txt,.mp3&qu

Asp.net实现MVC处理文件的上传下载功能实例教程

这篇文章主要介绍了Asp.net实现MVC处理文件的上传下载功能,比较全面而系统的对Asp.net MVC的文件上传下载功能进行了深入分析,有很好的借鉴价值,需要的朋友可以参考下 上传于下载功能是程序设计中非常常见的一个功能,在ASP.NET程序开发中有着非常广泛的应用.本文就以实例形式来实现这一功能. 一.概述 如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUploa

python使用ftplib模块实现FTP文件的上传下载

python已经默认安装了ftplib模块,用其中的FTP类可以实现FTP文件的上传下载 FTP文件上传下载 # coding:utf8 from ftplib import FTP def upload(f, remote_path, local_path): fp = open(local_path, "rb") buf_size = 1024 f.storbinary("STOR {}".format(remote_path), fp, buf_size) f