文件下载代码中的问题 [英] Problem in file download code

查看:81
本文介绍了文件下载代码中的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个"shared_files"表,其中有一列"File_path",还有另一列"Download"(下载),我有一个按钮可以下载该特定行的文件.
如何从数据库中检索文件的URL.
我有这段代码.

I had table of "shared_files" and had a column in it "File_path", and had another column Download where i had button to download file of that specific row.
How can i retrieve URL of files from database.
I had this code.

if (e.CommandName == "Download")
        {
            string URL = "";
            FileInfo fileInfo = new FileInfo(URL);

            if (fileInfo.Exists)
            {
                Response.Clear();
                Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
                Response.AddHeader("Content-Length", fileInfo.Length.ToString());
                Response.ContentType = "application/octet-stream";
                Response.Flush();
                Response.WriteFile(fileInfo.FullName);
            }
        }



现在,当我点击下载列的下载按钮时,该文件应该存在于同一行中,以进行下载.



Now what should i that when i slick on download button of download column, the file exist in the same row get download.
help me plz.

推荐答案



尝试这种方式可以满足您的要求.

将此代码放在项目模板的数据列表中
Hi,

try this way you can get your requirement.

place this code in datalist of item template
<asp:linkbutton id="LinkButton1" runat="server" commandargument="<%#Eval("filepath") %>" commandname="Download" xmlns:asp="#unknown">Download</asp:linkbutton>



和后面的代码只使用您写的内容



and code behind just use what u wrote

if (e.CommandName == "Download")
        {
            string URL = e.CommandArgument.Tostring();
            FileInfo fileInfo = new FileInfo(URL);
 
            if (fileInfo.Exists)
            {
                Response.Clear();
                Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
                Response.AddHeader("Content-Length", fileInfo.Length.ToString());
                Response.ContentType = "application/octet-stream";
                Response.Flush();
//check your file path is correct or not
                Response.WriteFile(fileInfo.FullName);
//or   Response.WriteFile(Server.MapPath(URL));
 //if url is like ~/Downloadfiles/filename1.pdf
            }
        }



最好的



All the Best


我为您准备了一个样品

在设计中

I have one sample for you

In Design

<asp:linkbutton id="Open" runat="server" commandargument="<%# Eval("FilePath") %>" oncommand="Download_Command" text="<%# Bind("FilePath") %>" xmlns:asp="#unknown"></asp:linkbutton>




在代码中




In Code

protected void Download_Command(object sender, CommandEventArgs e)
  {
      try
      {
          string filename = (string)e.CommandArgument;

          string path = Server.MapPath(filename);
          if (File.Exists(path))
          {
              FileInfo toDownload = new FileInfo(path);
              const long ChunkSize = 10000;
              byte[] buffer = new byte[ChunkSize];

              Response.Clear();
              FileStream iStream = File.OpenRead(path);
              long dataLengthToRead = iStream.Length;
              Response.ContentType = ReturnExtension(toDownload.Extension.ToLower());
              Response.AddHeader("content-disposition", "attachment;  filename=" + filename);
              while (dataLengthToRead > 0 & Response.IsClientConnected)
              {
                  int lengthRead = iStream.Read(buffer, 0, 10000);
                  Response.OutputStream.Write(buffer, 0, lengthRead);
                  Response.Flush();
                  dataLengthToRead = dataLengthToRead - lengthRead;
              }
              Response.Close();
          }
      }
      catch (Exception ex)
      {
      }
  }



希望对您有所帮助,
Theingi Win.



Hope be helpful,
Theingi Win.


这篇关于文件下载代码中的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆