通过 <a>标签实现ftp文件下载功能

环境:

ftp登录用户名

ftp登录密码

ftp文件路径

一般处理程序

下面是我通过网上查找的资料实现的一个例子

首先页面中的a 标签拼接路径带需要的参数

<a class="downST" href="../ashx/Folder.ashx?strPath=ftp://[ftp ip地址]/PLM/File/标准ztree数据.txt&FileName=标准ztree数据.txt">下载</a>

下面是处理程序代码

 public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string strUserName = "****";    //ftp登录用户名
        string strPassword = "******.";  //ftp登录密码

string FileName = context.Request["FileName"].ToString();
             string address = context.Request["strPath"].ToString();

        System.Net.WebClient request = new System.Net.WebClient();
        request.Credentials = new System.Net.NetworkCredential(strUserName, strPassword);//认证FTP用户名密码
        byte[] newFileData = request.DownloadData(address );

        ////下载文件
        //DownLoadFile(strFileName, newFileData, HttpContext context1);

         context.Response.ContentType = "application/octet-stream";
        if (FileName == "")
        {
            FileName = "Temp";
        }
        FileName = ToHexString(FileName);
        context.Response.AddHeader("Content-Disposition", "attachment;FileName=" + FileName);
        if (newFileData != null && newFileData.Length > 0)
            context.Response.OutputStream.Write(newFileData, 0, newFileData.Length);
        else
            context.Response.BinaryWrite(new byte[1]);
        context.Response.End();

    }

    public static string ToHexString(string s)
    {
        char[] chars = s.ToCharArray();
        StringBuilder builder = new StringBuilder();
        for (int index = 0; index < chars.Length; index++)
        {
            bool needToEncode = NeedToEncode(chars[index]);
            if (needToEncode)
            {
                string encodedString = ToHexString(chars[index]);
                builder.Append(encodedString);
            }
            else
            {
                builder.Append(chars[index]);
            }
        }

        return builder.ToString();
    }

    private static bool NeedToEncode(char chr)
    {
        string reservedChars = "$-_.+!*‘(),@=&";

        if (chr > 127)
            return true;
        if (char.IsLetterOrDigit(chr) || reservedChars.IndexOf(chr) >= 0)
            return false;

        return true;
    }

    private static string ToHexString(char chr)
    {
        UTF8Encoding utf8 = new UTF8Encoding();
        byte[] encodedBytes = utf8.GetBytes(chr.ToString());
        StringBuilder builder = new StringBuilder();
        for (int index = 0; index < encodedBytes.Length; index++)
        {
            builder.AppendFormat("%{0}", Convert.ToString(encodedBytes[index], 16));
        }
        return builder.ToString();
    }
    public bool IsReusable {
        get {
            return false;
        }
    }

  

原文地址:https://www.cnblogs.com/Vinkong/p/10059385.html

时间: 2024-10-20 08:07:14

通过 <a>标签实现ftp文件下载功能的相关文章

php实现文件下载功能总结

php实现文件下载功能总结 其实所谓的下载按钮根本就是个A标签,里面记录着要下载文件的路径,如果要下载的文件恰巧是图片或者是文本文件,那么下载的时候就会被浏览器弹出一个新窗口或者直接页面跳转掉并且直接打开这个文件,解决方法是将下载的文件改成压缩后的格式或者是浏览器不能直接打开的格式. 下面我来说一下下载的流程:浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),服务器接受到该请求以后,马上运行该down.php文件,运行该文件的时候,必然要把将要被下载的文件读入内存当中,这里

java—servlet实现文件下载功能

最近在学javaweb技术,利用所学知识做了一个简单的项目,在服务器上实现给用户下载文件的功能.自动列出文件夹下的文件提供下载,支持中文文件名. 结果图 其中使用了tomcat来部署服务器,代码中应用了少许EL表达式和JSTL标签,使用了jsp和servlet,当然还有java和http的基础知识,但是个人觉得重点是http的Content-Disposition头信息和Content-type头信息在servlet中下载方面的应用,详见DownloadPageServlet.java源码. 关

C#程序调用CodeSoft预先设计好的标签模块实现打印功能

if (this.tbSetLabel.Text.Trim() == "") { MessageBox.Show("请先 Enter 选择标签模板文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); this.tbSetLabel.Focus(); return; } int VarTag = 0; if (tbVar0.Text.Trim() != "") { Va

使用response实现文件下载功能

response.setContentType("text/html;charset=utf-8");  response.setCharacterEncoding("utf-8");  //获取绝对路径.通过ervletContext()  String path= this.getServletContext().getRealPath("/img/1.jpg");  //设置请求的头信息,第一参数:头的名称,第二参数:头值,URLEncod

JAVA文件下载功能问题解决日志

今天给报告系统做了个下载功能,遇到了挺多问题,通过查资料一一解决了. 1.首先遇到的问题是:java后台的输出流输出之后,没有任何报错,浏览器端不弹出保存文件的对话框,原本是ajax请求到后台的controller方法中添加了下载的方法,type和async两个参数的四种组合都不行,弃用ajax,用window.location.href='file/download?path='+file;重新发一个新的下载请求之后,保存对话框终于弹出. 2.弹出之后,发现文件名乱码,后台的解决方案代码如下:

Windows 7或者 server 小技巧 添加 IIS和FTP 组件功能

Windows 7或者 server 小技巧  添加 IIS和FTP 组件功能 在万能的 控制面版 ,添加删除 组件中 . 在IE中输入  http://127.0.0.1 或者 http://localhost 打开如下图片,即表示安装成功. 在控制面版,管理工具中可以打开 IIS管理器.

java web文件下载功能实现

需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>通过链接下载文件&

多种方式实现文件下载功能

(1)使用 NSURLConnection 直接方式 (2)使用 NSURLConnection 代理方式 (3)使用 NSURLSession 直接方式 (4)使用 NSURLSession 代理方式 (5)使用 AFNetworking 方式 附加功能: 使用 AFNetworking 中的 AFNetworkReachabilityManager 相关操作来检查网络情况: AFNetworkReachabilityStatusReachableViaWiFi:Wi-Fi 网络下 AFNet

【wget】wget的ftp相关功能

[wget下载ftp中的文件]wget的ftp相关功能 saveto=文件保存路径 URL=ftp路径 wgetlog=wget日志文件路径 wget -P ${saveto} --ftp-user=xxx --ftp-password=xxx -m -c -t5 ${URL} -a ${wgetlog} -nv        -o logfile        --output-file=logfile            Log all messages to logfile.  The