Asp.net response.transmitfile更改文件名
我有以下代码Asp.net response.transmitfile更改文件名,asp.net,vb.net,Asp.net,Vb.net,我有以下代码 Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles submit1.Click Dim filename As String = "C:\pdfs\" + TextBox1.Text Response.TransmitFile(filename) End Sub Textbox1.text是包含扩展名的pdf的名称。除了pdf的文件名被更改为我称之为的
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles submit1.Click
Dim filename As String = "C:\pdfs\" + TextBox1.Text
Response.TransmitFile(filename)
End Sub
Textbox1.text是包含扩展名的pdf的名称。除了pdf的文件名被更改为我称之为的网页名外,这一切都很好。c:\pdfs中的pdf名称保持原样
我可以停止更改名称吗。将Response.TransmitFile更改为
Dim fileInfo As FileInfo = new FileInfo("C:\pdfs\" + TextBox1.Text)
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", TextBox1.Text));
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.WriteFile(fileInfo.FullName);
Response.End();
将Response.TransmitFile更改为
Dim fileInfo As FileInfo = new FileInfo("C:\pdfs\" + TextBox1.Text)
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", TextBox1.Text));
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.WriteFile(fileInfo.FullName);
Response.End();
如果需要,您可以继续使用Transferfile,但方式是这样的
FileInfo file = new FileInfo(filePath);
//第1行:将“文件名”和附件添加到标题和名称中,这将强制显示打开/取消/保存对话框
response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
//将文件大小添加到响应头中
response.AddHeader("Content-Length", file.Length.ToString());
//设置ContentType
response.ContentType = file.Extension.ToLower();
//将文件写入响应(TransmitFile适用于ASP.NET 2.0。在ASP.NET 1.1中,您必须改用WriteFile)
如果需要,您可以继续使用Transferfile,但方式是这样的
FileInfo file = new FileInfo(filePath);
//第1行:将“文件名”和附件添加到标题和名称中,这将强制显示打开/取消/保存对话框
response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
//将文件大小添加到响应头中
response.AddHeader("Content-Length", file.Length.ToString());
//设置ContentType
response.ContentType = file.Extension.ToLower();
//将文件写入响应(TransmitFile适用于ASP.NET 2.0。在ASP.NET 1.1中,您必须改用WriteFile)
您确实应该在使用文件名之前验证它;至少在代码中附加
.pdf
。有人可以在文本框中输入..\Windows\somesystemfile之类的内容,如果文件权限设置不正确,则有人可以获取Windows密码文件或其他不允许泄露的信息。(一个目录遍历漏洞。)您确实应该在使用文件名之前验证它;至少在代码中附加.pdf
。有人可以在文本框中输入..\Windows\somesystemfile之类的内容,如果文件权限设置不正确,则有人可以获取Windows密码文件或其他不允许泄露的信息。(一个目录遍历漏洞。)谢谢!你让我走上了正确的道路。但是,response.ContentType=file.Extension.ToLower()代码>感觉不对。您应该将扩展映射到真实的内容类型(例如:.pdf=application/pdf、.png=image/png等)。是的,谢谢。谢谢!你让我走上了正确的道路。但是,response.ContentType=file.Extension.ToLower()代码>感觉不对。您应该将扩展映射到真实的内容类型(例如:.pdf=application/pdf、.png=image/png等)。是的,谢谢。