asp.net 如何使得点击“下载”链接下载文件时使用默认文件名?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 如何使得点击“下载”链接下载文件时使用默认文件名?相关的知识,希望对你有一定的参考价值。

数据库里存FileID,FIleName,Ext,路径filePath为“~/downloadFile/”,FileID是用Guid.NewGuid()得到的唯一文件标识,FileName是文件名(不包括扩展名),Ext是扩展名(如.doc)。我在前台用HyperLink的NavigateUrl=filePath+FileID.ToString()+Ext.ToString()直接访问下载文件的,点击后的“保存”文件的时候,文件名一栏默认的是FileID,乱。目标是要使文件名那一栏显示FileName,如何实现呢?请大神们最好附上代码噢 各种方法都可以提起

参考技术A NavigateUrl=filePath+FileID.ToString()+Ext.ToString()

你这里写的就是FIleID ,到底哪个是文件名,你写FIleID能访问到吗,
你不是说FIleName才是文件名吗?
NavigateUrl=filePath+FileName+Ext.ToString()追问

FileID当然能访问到,在Guid.NewGuid()后,FileID表现出来的应该是一堆乱码。根据FileID.后缀名就能范文文件,而根据FileName.后缀名是访问不到文件的

参考技术B NavigateUrl=filePath+数据库中的(FIleName)+Ext.ToString() 参考技术C 请问你最后是怎么解决的呢?

asp.net如何实现文件的上传和下载

上传

     Boolean fileOk = false;
            //指定文件路径,pic是项目下的一个文件夹;~表示当前网页所在的文件夹
            HttpPostedFile postedFile = request.Files[0];
            string filename = DateTime.Now.ToString("yyyyMMddhhmmss");
            string filePath = "/upload/pic/" + DateTime.Now.ToString("yyyyMMdd") + "/";
            String path = HttpContext.Current.Server.MapPath(filePath);//物理文件路径
            //文件上传控件中如果已经包含文件
            string ffname = string.Empty;
            if (postedFile.ContentLength > 0)
            {
                //得到文件的后缀
                String fileExtension = Path.GetExtension(postedFile.FileName).ToLower();
                fileExtension = fileExtension.Substring(1);
                //允许文件的后缀
                String[] allowedExtensions = ConfigurationManager.AppSettings["uploadPic"].Split(‘,‘);
                //看包含的文件是否是被允许的文件的后缀
                for (int i = 0; i < allowedExtensions.Length; i++)
                {
                    if (fileExtension == allowedExtensions[i])
                    {
                        fileOk = true;
                        break;
                    }
                }
                if (fileOk == false)
                {
                    msg="{\"msg\":\"图片格式不正确!\",\"success\":false}";
                    return null;
                }
                else
                {
                    try
                    {
                        //文件另存在服务器的指定目录下
                        if (!Directory.Exists(path))
                            Directory.CreateDirectory(path);
                        ffname = filename + Path.GetExtension(postedFile.FileName);
                        postedFile.SaveAs(path + ffname);
                        return filePath + ffname;
                    }
                    catch
                    {
                        msg="{\"msg\":\"图片上传失败!\",\"success\":false}";
                        return null;
                    }
                }
            }
            return null;

 下载

   protected void Page_Load(object sender, EventArgs e)
        {
            string url = Request.QueryString["url"];  //前台传来的文件相对路径
            if (File.Exists(HttpContext.Current.Server.MapPath(url)))  //根据相对路径获取绝对路径,然后判断文件是否存在
            {
                FileInfo DownloadFile = new FileInfo(HttpContext.Current.Server.MapPath(url));  //根据绝对路径获取文件对象
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ClearHeaders();
                HttpContext.Current.Response.Buffer = false;
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.Name));
                HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
                HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
            }
        }

以上是关于asp.net 如何使得点击“下载”链接下载文件时使用默认文件名?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net如何将文件下载到自己选择的位置上

asp.net下载文件自选路径

使用 ASP.NET CORE 中的链接从 Cloudinary 下载 pdf 文件

在 ASP.NET MVC 中返回文件以查看/下载

在ASP.net(C#)中用LinkButton控件实现文件附件的下载,要求点击按钮之后,可直接下载保存

asp.net网站如何实现 下载多个文件 或者下载某个文件夹,像bt那样的下载后文件夹里包含所需的多个文件