gpt4 book ai didi

c# - 在 asp.net c# 应用程序中浏览器之间丢失的文件扩展名

转载 作者:行者123 更新时间:2023-11-30 20:56:34 26 4
gpt4 key购买 nike

我有一个技术问题要问你们中的一些人。

基本上我主要在 firefox 中测试我的应用程序,我在应用程序中有一个下载功能,用户可以从 SQL Server 数据库下载文件。问题是,当我在 Internet Explorer 中下载文件时,除了 Microsoft 文件外,每个文件都会丢失其扩展名,例如word, access 等。除了位图,firefox 没有问题...

这是我的代码,谢谢

    //Download attachment file
protected void AttachmentDLBut_Click(object sender, EventArgs e)
{
//set the ID for the selected row
var ID = Request.QueryString["Id"];
using (SqlConnection conn = new SqlConnection("******"))
{
string sql = "SELECT FileType, Filename, Description FROM NetworkEquipment WHERE NetworkEquipmentID = '" + ID + "'";

using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//cmd.Parameters.AddWithValue("@ID", AttachmentDDL.SelectedItem.Value);
conn.Open();

SqlDataReader dr = cmd.ExecuteReader();

try
{
//if there is an attachment... download it
if (dr.Read())
{
Response.Clear();
Response.ContentType = dr["FileType"].ToString();
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + dr["Filename"].ToString());
Response.BinaryWrite((byte[])dr["Description"]);
Response.End();

conn.Close();
}
}
catch (SqlException sqlex) { MessageBox.Show("Sorry, an unexpected error has occurred while downloading this file. Error: " + sqlex); }
catch (Exception ex) { MessageBox.Show("Sorry, an unexpected error has occurred while downloading this file. Error: " + ex); }

//else nothing happens
}
}
}

最佳答案

使用 F12 开发人员工具或 FireBug 或类似工具查看服务器实际发送的内容。在这种情况下,它将类似于:

Content-Disposition: attachment;filename="filename.ext

服务器也可能默认发送这个或类似的东西:

Content-Type: text/html

首先,您需要关闭文件名后的引号。还建议在分号后留一个空格。您还需要清理文件名以确保它不包含混淆或非法字符。至少您需要去除双引号或引用它们。

其次,您需要添加一个 Content-Type header 。作弊是设置

Content-Type: application/octet-stream 

这将导致浏览器根据文件扩展名进行猜测。

关于c# - 在 asp.net c# 应用程序中浏览器之间丢失的文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17465565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com