zoukankan      html  css  js  c++  java
  • 文件下载

          做项目过程中,不可避免的会使用到下载功能,本文实现了从ftp文件服务器下载文件指定文件。具体操作如下:

    前提是需要下载的文件已经放在了指定的ftp文件服务器上面。

         view层:页面上提供下载按钮,供用户对指定文档进行下载。

    代码如下:

      <td><a class="btn btn-primary btn-small-height " href="/documents/download?type=document&file_name=<%= URI::escape(document[:file])%>">下载</a></td>

    注释:

    1、这里指定了下载的文件名称file_name,同时对文件名进行了转义编码,避免url中出现特殊字符,

    2、因为这里提供文档下载和工具包下载,所以我这里多传了一个参数type,如果用不到则不必要传。

    controller层代码:

     1 def download
     2     type = params[:type]
     3     file = params[:file_name]
     4     is_dir_exist = File.directory?'public/download_documents'
     5     if !is_dir_exist
     6       Dir::mkdir 'public/download_documents'
     7     end
     8     path = File.join("public/download_documents", file)
     9     begin
    10       upload_cmd(SysUtils::FILE_SERVER[:host], SysUtils::FILE_SERVER[:user], SysUtils::FILE_SERVER[:passwd]) do |conn| #连接ftp文件服务器
    11           conn.chdir("/platform_tools/document")  #切换到存放文件的目录
    12         conn.getbinaryfile(file, "public/download_documents/#{file}")
    13         send_file(path,filename: CGI::escape(CGI::unescape("#{file}")))
    14       end
    15     rescue Exception=> e
    16       flash[:error] = "下载失败,请稍后重试!"
    17       redirect_to document_download_documents_path
    18       SysUtils.send_mail((SysUtils::MAIL_TO+[current_user.email]).uniq, "资料下载失败!",  "#{$!}, #{e}")
    19     end
    20     Thread.new do   #这里另起一个线程删除下载到本地的文件
    21       sleep 100
    22       File.delete(path)
    23     end
    24   end

    主要实现思路是:从ftp文件服务器下载指定文件到当前项目根目录的public文件夹下面,这里在public文件夹下面新建了一个文件夹download_documents文件夹,作为临时中转文件夹,然后使用send_file方法输出该文件。这样用户就可以得到目的文件了。

    最后,因为从ftp文件服务器上面读取文件到本地指定目录,这样本地项目就会增大,所以需要将下载的文件进行删除。这里当该文件输出之后,就另起了一个线程将项目目录上面的这个文件删除。

  • 相关阅读:
    LintCode Python 简单级题目 41.最大子数组
    helm深入学习
    kubernetes组件helm
    解压war包
    linux打开进程数测试
    docker使用centos7系统构建oraclejdk镜像
    docker使用centos7系统构建tomcat镜像
    docker使用alpine系统构建tomcat镜像
    docker制作共享jdk的tomcat镜像
    java cpu使用率高异常排查
  • 原文地址:https://www.cnblogs.com/x123811/p/7094266.html
Copyright © 2011-2022 走看看