网页上下载文件提示框(vb.net)

时间:2021-12-25 14:02:46
    Public Sub downLoadFile(ByVal fPath As String)
        Dim fileInfo As System.IO.FileInfo = New System.IO.FileInfo(fPath)
        Response.Clear()
        Response.AddHeader("content-disposition", "attachment;filename=" + Server.UrlEncode(fileInfo.Name.ToString()))
        Response.AddHeader("content-length", fileInfo.Length.ToString())
        Response.ContentType = "application/octet-stream"
        Response.ContentEncoding = System.Text.Encoding.Default
        Response.WriteFile(fPath)
    End Sub

 

        public async Task<FileStreamResult> DownFile(string fileName)
        {
            var url = "http://boldseas.com/image/pro/"+ fileName;
            var http = new HttpClient();
            Stream x = await http.GetStreamAsync(url);
            return File(x, "application/octet-stream", Server.UrlEncode(fileName));
        }

方式一:

public FileStreamResult DownFile(string filePath, string fileName)
{
      string absoluFilePath = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["AttachmentPath"] +      filePath);
       return File(new FileStream(absoluFilePath, FileMode.Open), "application/octet-stream", Server.UrlEncode(fileName));
}

 

 

 

方式二:

 

public ActionResult DownFile(string filePath, string fileName)
{
filePath = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["AttachmentPath"] + filePath);
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/octet-stream";

Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fileName));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
return new EmptyResult();

}

 

View调用:

<href="/Document/DownFile?filePath=@item.Value&fileName=@item.Key">下载</a>  

 

 

其实主要是让浏览器直接下载文件而不是打开文件。
要做两步。
一就是把响应头的类型设置成application/octet-stream
二就是设置HTTP响应头的名字为Content-Disposition,设定值为attachment; filename=theFilename。这里的theFileName就是文件下载对话框里面的默认文件名。

Response.ClearContent();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode("qrcode.png", System.Text.Encoding.UTF8));
Response.BinaryWrite(ms.ToArray());