文件上传后,保存在数据库中,读取出来时利用aspx程序直接显示,问:程序能否自动修改“保存文件名”?

iamcrc 2003-07-22 12:36:01
C#写的aspx脚本,

把文件上传到服务器上,直接保存到SQL Server数据库中,用FileType保存上传文件的ContentType,用MyFile保存文件的二进制代码,而后使用一个showfile.aspx页面直接把文件显示出来,显示时设置("Content-Type")的内容。

经过测试,发现运行良好,如果上传的是.doc文件,ie会直接利用ole技术用word打开该文件。

不过目前碰到一个问题,如果上传的是.rar文件,例如a.rar,则Content-Type值为application/octet-stream,这时候用showfile.aspx显示时,会弹出保存窗口,可是默认的文件名都是showfile.aspx,能否有什么技术,让保存时候的文件名和上传时候的一样?

小弟在这多谢了!

附ShowFile.aspx:

<% @Page Language="C#" %>
<% @Import Namespace="System.IO" %>
<% @ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
private void Page_Load(Object sender, EventArgs e) {
string sql="SELECT * FROM TestFiles WHERE ID = '" + Request.QueryString["ID"] + "'";
SqlConnection connection = new SqlConnection("Server=.;uid=sa;pwd=;Database=TestUploadFile");
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
SqlDataReader dr = command.ExecuteReader();
if(dr.Read()){
Response.Clear();
Response.AddHeader("Content-Type",dr["FileType"].ToString());
Response.BinaryWrite((byte[])dr["MyFile"]);
}
dr.Close();
connection.Close();
}
</script>
...全文
27 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
panyee 2003-07-22
  • 打赏
  • 举报
回复
当然,你可以先判断一下类型,如果是word就不用写那一句
panyee 2003-07-22
  • 打赏
  • 举报
回复
在Response.Clear();后面加一句:
Response.AppendHeader("Content-Disposition", "attachment; filename=" + "aaaaa.rar");
iamcrc 2003-07-22
  • 打赏
  • 举报
回复
哈哈,多谢啦
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-22 12:36
社区公告

让您成为最强悍的C#开发者