精华内容
下载资源
问答
  • javaweb简单实现文件上传与下载源代码,仅供参考
  • jsp+Mysql实现学习网站的作业布置,文件上传下载文件。 jsp+Mysql实现学习网站的作业布置,上传文件,下载文件。内含源码、数据库和说明文档,可运行。简单勿喷,谢谢。 上传下载文件
  • QT 文件上传下载.zip

    2020-05-11 11:42:24
    QT 实现基于TCP的文件服务器/客户端,支持上传下载,具体详见博客:https://blog.csdn.net/guorong520/article/details/101058504
  • 本文实例为大家分享了nodejs实现文件上传下载的具体代码,供大家参考,具体内容如下 1.介绍 做了一个关于文件上传和下载的demo ,选择了Multer 作为中间件进行数据处理。 关于multer请参考中文翻译文档 ...
  • 最近要求做一个Excel表格上传下载的前端页面,第一次学Vue,Element-UI框架真的用起来很方便,封装了各种基础组件,很适合小白入门开发学习。 Element-UI:https://element.eleme.cn/#/zh-CN 最终效果如下,为降低...

    【项目背景】

    最近要求做一个Excel表格上传下载的前端页面,第一次学Vue,Element-UI框架真的用起来很方便,封装了各种基础组件,很适合小白入门开发学习。

    Element-UI: https://element.eleme.cn/#/zh-CN

    最终效果如下,为降低用户上传错误数据的概率,先提供一个下载模板,然后再让用户上传。

    【程序结构】

    #1-> 文件下载

    下载一般分两种情况,一种是去后台请求接口下载数据流的方式,这种情况适用于需要根据用户自定义需求请求数据库的情况,另一种是请求本地文件下载,比如我现在做的这种情况,只是需要给用户提供一个下载的模板文件,是预先定义好的,所以可以直接把文件就放在本地,前端直接请求文件地址下载即可。

    预先定义好的模板文件 [template.xlsx] 放在public/template/下。

    需要注意的是vue cli 3.0之后取消了原先的static文件夹,所有的静态资源文件可以放在public/下面。

    <template></template>

    <!-- 下载数据模板 -->
    <div class="div-label"><label>上传文件之前请先下载<span style="font-weight: bold">数据模板</span></label></div>
    <el-button @click="download" class="el-button-color add-button-box" size="medium" type="primary">
        <i class="el-icon-download el-icon--right"></i>下载数据模板
    </el-button>

     <script></script>

    通过window.location.href直接请求本地文件地

    methods: {
          // 下载本地文件
          download () {
            window.location.href = 'http://localhost:8080/template/template.xlsx'
          }

    #2-> 文件上传

    限制一次只能上传一个文件,限定只能上传.xlsx结尾的Excel文件,且文件大小不能超过10MB

    选择手动触发上传,并通过:http-request自定义上传方式,让用户先选择一个文件,前端展示上传文件列表,可以选择删除,再让用户确认上传文件,注意这里其实有两个步骤,分别绑定了两个button。

    <template></template>

    <!-- 上传文件 -->
    <div class="div-label"><label>上传文件,仅支持<span style="font-weight: bold">.xlsx</span>格式的Excel文件,且大小不超过<span
            style="font-weight: bold;color: red">10MB</span></label></div>
    <el-upload
        class="upload-demo"
        ref="upload"
        action
        accept=".xlsx"
        :limit="1"
        :file-list="fileList"
        :auto-upload="false"
        :on-exceed="handleExceed"
        :on-preview="handlePreview"
        :on-change="handleChange"
        :on-remove="handleRemove"
        :before-upload="beforeUpload"
        :http-request="httpRequest"
        :on-success="handleSuccess"
        :on-error="handleError">
        <el-button slot="trigger" size="medium" type="primary">选取文件</el-button>
        <el-button style="margin-left: 10px;" size="medium" type="success" @click="submitUpload">上传到服务器</el-button>
    </el-upload>

    <script></script>

    文件上传的基础响应事件,具体可参考官方文档

          // 超过文件上传最大个数
          handleExceed (files, fileList) {
            this.$message.warning('很抱歉当前支持最大上传文件个数为 1 个!')
          },
          // 文件上传到服务器之前的文件校验
          beforeUpload (file) {
            const extension = file.name.substring(file.name.lastIndexOf('.') + 1)
            const size = file.size / 1024 / 1024
            if (extension !== 'xlsx') { // 校验文件格式
              this.$message.warning('只支持上传后缀名为.xlsx的Excel文件')
            }
            if (size > 10) { // 校验文件大小
              this.$message.warning('文件大小不能超过10MB')
            }
          },
          // 文件状态改变
          handleChange (file, fileList) {
            if (file) {
              this.fileList = fileList.slice(-3)
            }
          },
          // 文件删除时
          handleRemove (file, fileList) {
            console.log(file, fileList)
            this.fileList = [] // 文件列表置空
          },
          // 点击文件列表中已上传的文件时的钩子
          handlePreview (file) {
            console.log(file)
          },
          // 文件上传成功
          handleSuccess (response, file, fileList) {
            console.log('-------handleSuccess-------')
            console.log(response)
            this.$message.success('文件 [' + file.name + '] 上传成功')
          },
          // 文件上传失败
          handleError (err, file, fileList) {
            console.log('-------handleError-------')
            console.log(err)
            this.$message.error('文件上传失败')
          }

    http-request 自定义上传实现,需要注意的是上传的文件需要封装在FormData里,并添加一个headers设置'multipart.form-data',

    this.$http.post(url, data, config)  这里的$http就是axios

          // 覆盖默认的上传行为,可以自定义上传的实现
          httpRequest (param) {
            console.log(param)
            const fileObj = param.file // 获取file文件
            const formData = new FormData() // FormData对象
            formData.append('file', fileObj) // file封装到FormData里
            // 请求后台上传数据的接口
            this.$http.post('/upload', formData, {
              headers: { 'Content-Type': 'multipart/form-data' }
              // url: '/upload',
              // data: formData
              // method: 'post'
            }).then(res => {
              console.log('-------res--------')
              console.log(res)
              if (res.data.meta.status === '200') {
                this.$message.success(res.data.meta.msg)
                // 清空文件列表
                this.fileList = []
              } else {
                this.$message.error(res.data.meta.msg)
              }
            }, err => {
              console.log('-------err--------')
              console.log(err)
              this.$message.error('上传文件内容有问题,请保证上传文件字段均不为空且正确')
            })
          }

    手动上传

        submitUpload () {
            if (this.fileList.length === 0) { // 上传文件列表为空
              this.$message.warning('请选择一个上传文件')
            } else { // 执行上传操作
              this.$refs.upload.submit()
            }
        }

    【完整代码】

    <template>
      <div> 
        <el-card>
          <!-- 下载数据模板 -->
          <div class="div-label"><label>上传文件之前请先下载<span style="font-weight: bold">数据模板</span></label></div>
          <el-button @click="download" class="el-button-color add-button-box" size="medium" type="primary">
            <i class="el-icon-download el-icon--right"></i>下载数据模板
          </el-button>
          <!-- 上传文件 -->
          <div class="div-label"><label>上传文件,仅支持<span style="font-weight: bold">.xlsx</span>格式的Excel文件,且大小不超过<span
            style="font-weight: bold;color: red">10MB</span></label></div>
          <el-upload
            class="upload-demo"
            ref="upload"
            action
            accept=".xlsx"
            :limit="1"
            :file-list="fileList"
            :auto-upload="false"
            :on-exceed="handleExceed"
            :on-preview="handlePreview"
            :on-change="handleChange"
            :on-remove="handleRemove"
            :before-upload="beforeUpload"
            :http-request="httpRequest"
            :on-success="handleSuccess"
            :on-error="handleError">
            <el-button slot="trigger" size="medium" type="primary">选取文件</el-button>
            <el-button style="margin-left: 10px;" size="medium" type="success" @click="submitUpload">上传到服务器</el-button>
          </el-upload>
        </el-card>
      </div>
    </template>
    
    <script>
      export default {
        name: 'Upload',
        data () {
          return {
            fileList: []
          }
        },
        methods: {
          // 下载本地文件
          download () {
            window.location.href = 'http://localhost:8080/template/template.xlsx'
          },
          // 超过文件上传最大个数
          handleExceed (files, fileList) {
            this.$message.warning('很抱歉当前支持最大上传文件个数为 1 个!')
          },
          // 文件上传到服务器之前的文件校验
          beforeUpload (file) {
            const extension = file.name.substring(file.name.lastIndexOf('.') + 1)
            const size = file.size / 1024 / 1024
            if (extension !== 'xlsx') { // 校验文件格式
              this.$message.warning('只支持上传后缀名为.xlsx的Excel文件')
            }
            if (size > 10) { // 校验文件大小
              this.$message.warning('文件大小不能超过10MB')
            }
          },
          // 文件状态改变
          handleChange (file, fileList) {
            if (file) {
              this.fileList = fileList.slice(-3)
            }
          },
          // 文件删除时
          handleRemove (file, fileList) {
            console.log(file, fileList)
            this.fileList = [] // 文件列表置空
          },
          // 点击文件列表中已上传的文件时的钩子
          handlePreview (file) {
            console.log(file)
          },
          // 文件上传成功
          handleSuccess (response, file, fileList) {
            console.log('-------handleSuccess-------')
            console.log(response)
            this.$message.success('文件 [' + file.name + '] 上传成功')
          },
          // 文件上传失败
          handleError (err, file, fileList) {
            console.log('-------handleError-------')
            console.log(err)
            this.$message.error('文件上传失败')
          },
          // 覆盖默认的上传行为,可以自定义上传的实现
          httpRequest (param) {
            console.log(param)
            const fileObj = param.file // 获取file文件
            const formData = new FormData() // FormData对象
            formData.append('file', fileObj) // file封装到FormData里
            // 请求后台上传数据的接口
            this.$http.post('/upload', formData, {
              headers: { 'Content-Type': 'multipart/form-data' }
              // url: '/upload',
              // data: formData
              // method: 'post'
            }).then(res => {
              console.log('-------res--------')
              console.log(res)
              if (res.data.meta.status === '200') {
                this.$message.success(res.data.meta.msg)
                // 清空文件列表
                this.fileList = []
              } else {
                this.$message.error(res.data.meta.msg)
              }
            }, err => {
              console.log('-------err--------')
              console.log(err)
              this.$message.error('上传文件内容有问题,请保证上传文件字段均不为空且正确')
            })
          },
          // 上传文件
          submitUpload () {
            if (this.fileList.length === 0) { // 上传文件列表为空
              this.$message.warning('请选择一个上传文件')
            } else { // 执行上传操作
              this.$refs.upload.submit()
            }
          }
        }
      }
    </script>
    
    <style scoped>
      .div-label {
        padding: 20px 0;
        width: 100%;
      }
    </style>
    

    参考:

    https://www.jianshu.com/p/ea2b8ef30ffc

    https://www.cnblogs.com/pinkpinkc/p/13221705.html

    https://www.cnblogs.com/carriezhao/p/12707058.html

    展开全文
  • WCF实现简单的文件上传与下载,几十兆的文档上传下载都测试过,没问题。
  • Python实现文件上传与下载

    千次阅读 2020-05-28 17:24:25
    #以写字节的形式打开一个文件 f = open("_"+fileName, 'wb') #写文件 f.write(fileBuffer) #关闭打开的文件 f.close() #文件上传涵数 def upload_file(socket): #以读byte字节的形式打开文件 f = open(upFileName, ...
    import sys
    import socket
    import getopt
    import time
    
    upFileName = ""
    
    #服务端涵数
    def server_handle(port):
        #创建服务端套接字
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
        #绑定IP和端口
        server.bind(('0.0.0.0', port))
    
        #监听
        server.listen(10)
    
        print("[*] Listening on 0.0.0.0:%d"%port)
    
        while True:
            client_socket, addr = server.accept()
            download_file(client_socket)
    
    #客户端涵数
    def client_handle(target, port):
        #创建socket连接
        client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        client.connect((target, port))
    
        #将字符串文件名转成字节发送,socket套接字是要用byte传输
        client.send(upFileName.encode('utf-8'))
        time.sleep(1)
        upload_file(client)
    
        #传输完文件后关闭文件流
        client.close()
    
    #文件下载涵数
    def download_file(socket):
        #读取socket传过来的文件名数据
        fileName = socket.recv(1024)
    
        #因为socket传过来的是字节码,所以这里需要转成字符串
        fileName = fileName.decode()
        print("[*]Receive the file:%s"%fileName)
    
        #定义一个byte型的变量
        fileBuffer = "".encode('utf-8')
    
        #循环从socket中读取数据
        while True:
            #一次读取1024个字节
            data = socket.recv(1024)
            if data:
                #读取的数据累加保存在变量中
                fileBuffer += data
            else:
                #如果读到没有数据了就跳出结束
                break;
    
        #以写字节的形式打开一个文件
        f = open("_"+fileName, 'wb')
        #写文件
        f.write(fileBuffer)
        #关闭打开的文件
        f.close()
    
    #文件上传涵数
    def upload_file(socket):
        #以读byte字节的形式打开文件
        f = open(upFileName, 'rb')
    
        #读取文件
        data = f.read()
    
        #关闭打开文件
        f.close()
    
        #发送文件数据
        socket.send(data)
    
    #定义usage涵数(命令行提示信息)
    def usage():
        print("help info: python upload.py -h")
        print("client: python upload.py -t [target] -p [port] -u [uploadfile]")
        print("server: python filename.py -lp [port]")
        sys.exit()
    
    def main():
        global upFileName   #文件名
        target = ""     #目标IP
        port = 0        #目标端口
        help = False    #显示帮助信息
        listen = False  #是否监听
    
        #利用getopt模块获取命令行参数
        opts, args = getopt.getopt(sys.argv[1:], "t:p:u:hl")
        for o, a in opts:
            if o == "-t":
                target = a;
            elif o == "-p":
                port = int(a)
            elif o == "-u":
                upFileName = a
            elif o == "-h":
                help = True
            elif o == "-l":
                listen = True
            else:
                #断言,传入的参数有误
                assert False, "Unhandled Option"
    
    
        #打印帮助信息
        if help:
            usage()
    
        #区分客户端和服务端
        if listen:
            server_handle(port)
        else:
            client_handle(target, port)
    
    if __name__ == "__main__":
        main()

     

    展开全文
  • 主要介绍了vue实现Excel文件上传与下载功能,本文通过两种方式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • C#文件上传与下载

    千次阅读 2019-05-16 07:57:33
    C#文件上传与下载 开发工具关键技术:VS MVC、SQL 撰写时间:2019/5/14 在一个系统中,用户需要上传一份文件到服务器中,但是编程的程序代码中不允许提交特殊字符,程序默认为危险字符,故需要提交这种字符的话,...

    C#文件上传与下载

    开发工具与关键技术:VS     MVC、SQL
    撰写时间:2019/5/14
    

    在一个系统中,用户需要上传一份文件到服务器中,但是编程的程序代码中不允许提交特殊字符,程序默认为危险字符,故需要提交这种字符的话,需要取消程序验证。[ValidateInput(false)]取消危险字符的验证 如 “<> %KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲”等等 ;为了安全起见,正常的…/等敏感字符的(有点类似脚本注入),如果你有必要提交这些东西的话,就需要加上ValidateInput标签,比如要录入HTML内容的时候,富文本编辑的时候。

    上传文件到项目中,但是这并不代表文件就是直接保存到数据库中了,不增加数据库的存储压力,这些文件一般是存放于项目的文件夹中,在代码中已经指明了文件上传到那个文件夹中。因为上传文件之后可以下载这个文件,所以在数据库只是保存下载这个文件的路径
    在这里插入图片描述
    在数据库记录的是一个路径,这个路径表示是文件下载的路径。在数据库保存的路径结果如下截图:
    在这里插入图片描述
    <a href="/SystemManagement/IssuanceNotice/DownloadAttachment?fileName=3139642019-04-08-20-08-34-6162.jpg"target="_blank">313964.jpg
    上传文件时,需要一个按钮触发文件选择框打开;。input标签的type=”file”表示打开的是文件选择框,在input标签添加accept属性值,表示限定文件类型,即打开文件选择框时,它会根据你所限定的文件类型在显示符合类型的文件。例如:accept="image/*"表示打开的文件必须是图片类型的文件,其打开文件选择框的效果如下截图:

    上传文件以HttpPostedFileBase attachmenFile 作为上传文件方法的传入参数,上传的文件属于附件不能太大,所以上传文件之前需要对文件的大小进行判断,用try{}catch(){}捕足错误;

    1、 判断文件的大小attachmentFile.ContentLength
    是否大于0,大于0说明用户已选择到文件,上传的文件就不为空了;
    2、 判断文件是否是大于20M,大于20M的文件不能上传,要提醒用户所上传的文件过大,请重新选择上传文件。
    在这里插入图片描述

        if (attachmentFile.ContentLength >(20 * 1024 * 1024))
                                {
                                    return   Json("上传的文件不能大于20M", JsonRequestBehavior.AllowGet);
                                }
    

    3、 获取Session中的文件夹

                    List<Files>  sessionFiles = new List<Files>();
                    if (Session["sessionFiles"]!=null)
                    {
                        sessionFiles = Session["sessionFiles"] as List<Files>;
                    }
    

    4、 上传文件并不是上传到数据库,是上传到项目的文件夹,故上传文件时以防上传的路径找不到,先判断这个文件夹是否存在,不存在就需通过代码创建。

          if (!Directory.Exists(Server.MapPath("~/Document/Temp/")))
                        {                       
    Directory.CreateDirectory(Server.MapPath("~/Document/Temp/"));
                       }
    

    5、 获取文件类型即文件后缀名,再获取文件名不包括文件后缀名;

    string fileExtension = System.IO.Path.GetExtension(attachmentFile.FileName); //文件类型
    string fileName =System.IO.Path.GetFileNameWithoutExtension(attachmentFile.FileName); //不包含文件扩展名的名称
    string oldFileName = attachmentFile.FileName;//原始文件名称
    

    6、 重命名,拼接当前日期时间,以防用户多次上传同一个文件时发生冲突

    fileName = fileName + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + fileExtension;
    

    7、 保存文件路径,保存文件

    string  filePath = Server.MapPath("~/Document/Temp/") +  fileName; //保存文件的路径
    attachmentFile.SaveAs(filePath);//保存文件 
    

    8、 根据文件后缀名判断文件的类型

    int fileTypeId;
    
    string fileTypeName;
    
    fileExtension = fileExtension.ToLower();//小写转换
    
    if ("(.mp4)|(.avi)|(.flv)|(.rmvb)|(.rm)|(.3gp)|(.mkv)|(.dvd)|(.mpg)|(.mov)".Contains(fileExtension)){
    
                            fileTypeId = 1;//视频
    
                            fileTypeName = "视频";
    
                        }
    
                        else if ("(.mp3)|(.wav)|(.cd)|(.ogg)|(.ape)|(.au)".Contains(fileExtension))
    
                        {
    
                            fileTypeId = 2;//音频
    
                            fileTypeName = "音频";
    
                        }
    
                        else if ("(.txt)|(.text)".Contains(fileExtension))
    
                        {
    
                            fileTypeId = 3;//文本
    
                            fileTypeName = "文本";
    
                        }
    
                        else if ("(.doc)|(.docx)|(.xsl)|(.xslx)|(.ppt)|(.pptx)".Contains(fileExtension))
    
                        {
    
                            fileTypeId = 4;//文档
    
                            fileTypeName = "文档";
    
                        }
    
                        else if ("(.gif)|(.bmp)|(.jpeg)|(.png)|(.jpg)".Contains(fileExtension))
    
                        {
    
                            fileTypeId = 5;//图片
    
                            fileTypeName = "图片";
    
                        }
    
                        else
    
                        {
    
                            fileTypeId = 7;//其他
    
                            fileTypeName = "其他";
    
                        }
    

    9、 保存文件路径到数据库

        Files myfiles = new Files();//实例化文件表      
            {//给文件表赋值
    
                FileTypeID = fileTypeId,
    
                FileTypeName = fileTypeName,
    
                FileName = fileName,
    
                FileGuid = Guid.NewGuid().ToString("N"),//全球唯一标识符 e0a953c3ee6040eaa9fae2b667060e09 
       //<a class="selected"  href="/Document/201612290948105951595.pdf"  target="_blank">保卫工作简报(2016年第2期).pdf</a>
    //拼接文件下载的方法路径
     Files = "<a   href=\"/SystemManagement/IssuanceNotice/DownloadAttachment?fileName=" + fileName + "\"target=\"_blank\">" + oldFileName + "</a>",
    };
    

    10、 Session记录当前上传的附件,以便用户选择上传时,突然不想上传了,可以移除这个附件

    if(sessionFiles!=null) {
                           sessionFiles.Add(myfiles);
       //把上传的附件记录到session
    Session["sessionFiles"] =sessionFiles;
    return   Json(true, JsonRequestBehavior.AllowGet);
    }
    

    文件上传的方法写好,需要页面的调用;页面请求方法采用原生的XMLHTTPRequest提交请求,通过input标签的改变事件触发上传,所以在input标签去掉value值的时候取消再次上传附件;

      if ($("#getAttachmentFile").val() == "" || $('#getAttachmentFile').val() == undefined) {
                    return;
                }
    

    获取选择的文件var files = $("#getAttachmentFile").prop(“files”);,判断长度是否大于0,再判断文件不大于20M在,再创建FormData对象,把文件放入FromData对象,创建一个XMLHTTPRequest对象;发送成功事件、失败事件,上传进度监控,上传的post提交方式,发送数据。方法如下截图:
    在这里插入图片描述
    在这里插入图片描述
    附件的下载,根据上传时,把文件下载的路径已经保存数据库中,并且是保存在a标签中,故要下载附件的时候,直接点击附件下载即可根据附件是否存在文件中的情况,不在文件夹中就不能下载。下面是下载附件的方法截图:
    在这里插入图片描述

    展开全文
  • SpringMVC实现文件上传,需要再添加两个jar包。一个是文件上传的jar包,一个是其所依赖的IO包。这两个jar包,均在Spring支持库的org.apache.commons中。 1.2 书写控制器方法  FileUpController.java 完整 @...

    1  实现步骤

    1.1 引入核心JAR包

    SpringMVC实现文件上传,需要再添加两个jar包。一个是文件上传的jar包,一个是其所依赖的IO包。这两个jar包,均在Spring支持库的org.apache.commons中。


    1.2 书写控制器方法

     FileUpController.java 完整

    @Controller
    public class FileUpController {
    
    	@RequestMapping("/")
    	public String index() {
    		return "index";
    	}
    	
    	@RequestMapping(value="upload",method=RequestMethod.POST)
    	public String upload(MultipartFile myFile,Model model,HttpServletRequest request) {
    	
    		//获取上传图片存储目录
    		String path = request.getSession().getServletContext().getRealPath("upload");
    		System.out.println(path);
    		//获取文件名并使用UUID生成新文件名
    		String fileName  = myFile.getOriginalFilename();
    		String newFileName = UUID.randomUUID()+fileName.substring(fileName.lastIndexOf("."));
    		//在指定上传存储目录中创建新文件
    		File targetFile = new File(path,newFileName);
    		//找不到指定上传图片存储目录,就新创建此目录
    		if(!targetFile.exists()) {
    			targetFile.mkdirs();
    		}
    		//将文件写入硬盘
    		try {
    			myFile.transferTo(targetFile);
    		} catch (IllegalStateException | IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		//将上传后的文件路径传到view
    		model.addAttribute("fileUrl", request.getContextPath()+"/upload"+newFileName);
    		
    		return "upload";
    	}
    	
    	
    }
    

     


    applicationContext.xml:

    注:必须创建MultipartFile实例。要不出现500错误


    index.jsp页面:需指定 enctype="multipart/form-data 

    <body>
    
       <form action="${pageContext.request.contextPath }/first.do" method="post" enctype="multipart/form-data">
    
       <h2>文件上传</h2>
    
                    文件:<input type="file" name="uploadFile"/><br/><br/>
    
          <input type="submit" value="上传"/>
    
       </form>
    
     </body>


     实现效果:  


    2  没有选择要上传的文件&&限制文件上传类型

     如果没有选择要上传的文件,可以通过如下判断代码回到错误页,并配置异常类

    <!-- 配置异常类  报错 -->
    
        <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    
        <property name="defaultErrorView" value="/error.jsp"></property>
    
        </bean>


     


    3  多文件上传 

     

    实现效果:


    4  文件下载

     

    	
    <a href="${pageContext.request.contextPath }/download.do?line.jpg">下载</a>

    DownloadControll.java 完整 

    @Controller
    public class DownloadController {
        @RequestMapping(value="download",method=RequestMethod.GET)
        public ResponseEntity<byte[]> download(String filename,HttpServletRequest request)throws Exception {
            //下载文件路径
            String path = request.getServletContext().getRealPath("upload");
            File file = new File(path + "/" + filename);
            //开始设置http请求头
            HttpHeaders headers = new HttpHeaders();  
            //下载显示的文件名,解决中文名称乱码问题  
            String downloadFileName = new String(filename.getBytes("UTF-8"),"ISO-8859-1");
            //通知浏览器以attachment(下载方式)打开文件。
            headers.setContentDispositionFormData("attachment", downloadFileName); 
            //设置mime:application/octet-stream : 二进制流数据(最常见的文件下载)。
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            return new ResponseEntity<byte[]>(
                           FileUtils.readFileToByteArray(file),    //把一个文件转换成字节数组返回
                           headers,                                                //http请求头
                           HttpStatus.OK                                      //200
                       );  
        }
    }
    
    

     实现效果:

    项目源码下载--->>工程源码下载 

    展开全文
  • 文件上传与下载之数据库实现

    千次阅读 2017-11-10 11:14:48
    文件上传与下载之数据库实现 一、Javabean数据库设计 1、javabean设计 为了实现文件上传与下载的功能,我们把文件相关的信息封装到FileUploadDownload对象中,方便操作和管理文件的信息 private String id; ...
  • idea实现文件上传下载

    2019-10-24 08:38:23
    idea工具实现上传下载。下载后可将数据库清空,里面是我自己的数据库数据,在项目中的上传文件已经删除,所以数据库中的数据失效,需要清空。下载完打开Controller层代码,把RestController改成Controller,还有把...
  • 文件上传与下载的功能实现

    千次阅读 2018-06-22 10:11:01
     一、进行文件上传时只能使用post方式提交表单 二、表单必须添加一个属性:enctype=”multipart/form-data” 三、用于上传文件的元素必须时2、enctype属性 作用:告知服务器请求正文的MIME类型,作用content-...
  • struts2实现文件上传与下载

    千次阅读 2018-01-20 21:16:21
    一、单文件上传 1、文件上传条件: (1)请求方法必须是post (2)enctype的属性值必须为multipart/form-data (3)提供一个文件选择域 2、文件上传jsp代码 "java" contentType="text/html; charset=UTF-8" ...
  • java文件上传与下载

    万次阅读 2019-03-06 19:54:21
    java文件上传与下载,特记录,方便以后直接使用。不走弯路。 package com.bootdo.common.utils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind....
  • Spring Boot实现文件上传与下载

    万次阅读 多人点赞 2019-03-27 23:51:23
    我们去logs_app文件夹下查看,生成了上传的日志文件。 2.5 Java客户端上传文件 上面我们上传文件的客户端为HTML页面,但我们实际生产中未必是WebAPP,这时我们可以通过模拟发送浏览器HTTP请求来实现上传文件。...
  • 它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。 MinIO官方文档:...
  • SpringBoot下文件上传与下载的实现

    万次阅读 2017-08-05 00:40:23
    本文欢迎转载,转载请注明出处,谢谢~(作者:喝酒不骑马 Colton_Null) from CSDNSpringBoot后台如何实现文件上传下载?最近做的一个项目涉及到文件上传下载。前端上传采用百度webUploader插件。有关该插件的使用...
  • winform实现FTP上传下载、删除文件。自己写的Demo,亲测可用!
  • 一个简单的nodejs服务器,可实现上传下载文件、图片等,具体使用可查看README.md文件下载文件的代码在routes/index.js文件中,上传文件的代码在routes/upload.js文件中,访问方式可查看文件顶部的注释
  • Nginx 配置服务器文件上传与下载

    千次阅读 2020-03-03 11:24:28
    最近在做项目中需要给前端提供文件下载链接,所以借着机会搭建了基于Nginx的文件服务器,特此记录便于日后查阅。 1、配置文件 需要修改 nginx.conf 配置文件(内网地址:10.12.1.215、外网地址:113.98.58.42),...
  • java实现文件上传与下载

    万次阅读 2015-08-08 13:59:19
    JAVA中文件上传下载知识点整理, 东风化宇,文件上传 一、对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦。 JSP...
  • Python+requests之文件上传与下载

    千次阅读 2020-07-13 22:38:23
    在做接口自动化测试中,经常会遇到文件上传下载接口 文件上传 一般上传文件使用的都是Content-Type: multipart/form-data;数据类型,可以发送文件,也可以发送相关的消息体数据。 使用 requests 上传文件的...
  • springboot实现文件上传与下载

    万次阅读 2020-05-31 12:02:45
    这里仅实现文件上传与下载服务,完整项目文末有源码 1.先看一下项目结构 上面indexcontroller是用于指向首页的index.html;实际功能由Filecontroller来实现。 2.前端使用模板引擎thymeleaf 3.上传与下载功能 ...
  • .Net Core 文件上传与下载

    千次阅读 2018-09-04 21:56:20
    参考链接: ASP.NET Core 2 系列 - 上傳/下載檔案 ...按 参考1 中测试,下载文件文件名总是变成方法名(DownloadFile),并且没有文件扩展名,保存后改扩展名可正常查看。 参考 链接3 测试无效,未解决下载问题。 参...
  • strutshibernate实现文件上传与动态下载 主要就是运用struts2.2和hibernate3.6进行文件上传与下载,并且能动态的下载,里面包括了详细的构建文档,以及代码
  • (三)Rxjava2+Retrofit之文件上传与下载

    千次阅读 热门讨论 2017-10-26 17:45:01
    本篇文章将根据上篇文章的封装架构实现文件上传服务器的功能。文章将从以下几点实现对Retrofit上传文件的讲解 一 使用Retrofit上传文件时遇到的坑 二 实现单文件上传的两种方法 三 实现多文件上传 一、使用Retrofit...
  • flask之文件上传与下载

    千次阅读 2019-05-04 11:55:09
    一、创建一个普通的文件上传的表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>文件...
  • SpringMVC处理文件上传与下载

    万次阅读 2018-06-18 12:09:50
    在编写控制器方法处理文件上传之前,我们必须要配置一个multipart解析器,通过它来告诉DispatcherServlet该如何读取multipart请求。 配置multipart解析器 DispatcherServlet没有实现解析multipart请求数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 638,826
精华内容 255,530
关键字:

文件上传与下载