当前位置:  开发笔记 > 编程语言 > 正文

从服务器asp.net下载文件

如何解决《从服务器asp.net下载文件》经验,为你挑选了1个好方法。

我想从服务器下载文件到本地主机.

我有一个网络代码应该工作但不工作

     protected void Button4_Click(object sender, EventArgs e)
    {
     //To Get the physical Path of the file(test.txt)
    string filepath = Server.MapPath("test.txt");

    // Create New instance of FileInfo class to get the properties of the file being downloaded
   FileInfo myfile = new FileInfo(filepath);

   // Checking if file exists
   if (myfile.Exists)
   {
   // Clear the content of the response
   Response.ClearContent();

// Add the file name and attachment, which will force the open/cancel/save dialog box to show, to the header
Response.AddHeader("Content-Disposition", "attachment; filename=" + myfile.Name);

// Add the file size into the response header
Response.AddHeader("Content-Length", myfile.Length.ToString());

// Set the ContentType
Response.ContentType = ReturnExtension(myfile.Extension.ToLower());

// Write the file into the response (TransmitFile is for ASP.NET 2.0. In ASP.NET 1.1 you have to use WriteFile instead)
Response.TransmitFile(myfile.FullName);

// End the response
Response.End();
  }

    }

    private string ReturnExtension(string fileExtension)
    {
        switch (fileExtension)
        {
            case ".htm":
            case ".html":
            case ".log":
                return "text/HTML";
            case ".txt":
                return "text/plain";
            case ".doc":
                return "application/ms-word";
            case ".tiff":
            case ".tif":
                return "image/tiff";
            case ".asf":
                return "video/x-ms-asf";
            case ".avi":
                return "video/avi";
            case ".zip":
                return "application/zip";
            case ".xls":
            case ".csv":
                return "application/vnd.ms-excel";
            case ".gif":
                return "image/gif";
            case ".jpg":
            case "jpeg":
                return "image/jpeg";
            case ".bmp":
                return "image/bmp";
            case ".wav":
                return "audio/wav";
            case ".mp3":
                return "audio/mpeg3";
            case ".mpg":
            case "mpeg":
                return "video/mpeg";
            case ".rtf":
                return "application/rtf";
            case ".asp":
                return "text/asp";
            case ".pdf":
                return "application/pdf";
            case ".fdf":
                return "application/vnd.fdf";
            case ".ppt":
                return "application/mspowerpoint";
            case ".dwg":
                return "image/vnd.dwg";
            case ".msg":
                return "application/msoutlook";
            case ".xml":
            case ".sdxl":
                return "application/xml";
            case ".xdp":
                return "application/vnd.adobe.xdp+xml";
            default:
                return "application/octet-stream";
        }
    }

现在当点击按钮时,文件应该从服务器下载到本地主机......但似乎没有发生任何事情......

我在服务器的桌面上有test.txt ...保存文件选项也不在客户端..

我发布文件并将其放在服务器的inetpub文件夹中,并从客户端运行GUI ..除此之外一切正常...

任何建议......请帮助

这个程序下载一个文件,如果它存在于inetpub文件夹中..而不是我想从服务器内的任何位置下载...

??



1> 小智..:

写入按钮单击您要下载文件

protected void Button1_Click(object sender, EventArgs e)

 {

        string allowedExtensions = ".mp4,.pdf,.m4v,.gif,.jpg,.png,.swf,.css,.htm,.html,.txt";
        // edit this list to allow file types - do not allow sensitive file types like .cs or .config

        string fileName = "Images/apple.jpg";
        string filePath = "";

        //if (Request.QueryString["file"] != null) fileName = Request.QueryString["file"].ToString();
        //if (Request.QueryString["path"] != null) filePath = Request.QueryString["path"].ToString();

        if (fileName != "" && fileName.IndexOf(".") > 0)
        {
            bool extensionAllowed = false;
            // get file extension
            string fileExtension = fileName.Substring(fileName.LastIndexOf('.'), fileName.Length - fileName.LastIndexOf('.'));

            // check that we are allowed to download this file extension
            string[] extensions = allowedExtensions.Split(',');
            for (int a = 0; a < extensions.Length; a++)
            {
                if (extensions[a] == fileExtension)
                {
                    extensionAllowed = true;
                    break;
                }
            }

            if (extensionAllowed)
            {
                // check to see that the file exists 
                if (File.Exists(Server.MapPath(filePath + '/' + fileName)))
                {

                    // for iphones and ipads, this script can cause problems - especially when trying to view videos, so we will redirect to file if on iphone/ipad
                   // if (Request.UserAgent.ToLower().Contains("iphone") || Request.UserAgent.ToLower().Contains("ipad")) { Response.Redirect(filePath + '/' + fileName); }
                    Response.Clear();
                    Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
                    Response.WriteFile(Server.MapPath(filePath + '/' + fileName));
                    Response.End();
                }
                else
                {
                    litMessage.Text = "File could not be found";
                }
            }
            else
            {
                litMessage.Text = "File extension is not allowed";
            }
        }
        else
        {
            litMessage.Text = "Error - no file to download";
        }
    }

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有