我在数据库列中存储了一个txt文件作为字符串。现在我的一个aspx页面上有一个链接...我想在用户点击这个链接时打开一个txt文件。我如何从数据库中读取文件。我知道如何使用streamreader来存储磁盘上的文件。从数据库中读取文件
谢谢
我在数据库列中存储了一个txt文件作为字符串。现在我的一个aspx页面上有一个链接...我想在用户点击这个链接时打开一个txt文件。我如何从数据库中读取文件。我知道如何使用streamreader来存储磁盘上的文件。从数据库中读取文件
谢谢
这要做一些澄清。
如果文件以字符串的形式存储在数据库中,您只需将其读入一个字符串并将其显示在页面中即可。
public void Page_Load(object sender, EventArgs e)
var text = (from x in dataContext.MyTextTable where x.Id == someId select x.FileText).FirstOrDefault();
this.textBox.Text = text;
}
好了,这里就是你需要做什么。伪代码如下:
负载从数据库
使用ToCharArray关于字符串()方法中的字符串来获得字符数组 使用HttpResponse对象写()char数组响应流
下面是一些几乎编译代码:
public void Page_Load(object sender, EventArgs e)
{
var text = Repository.GetTextFile(this.FileTextBox.Text).ToCharArray();
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" & this.FileTextBox.Text);
Response.AddHeader("Content-Length", text.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Write(text, 0, text.length);
Response.End();
}
我相信MIME类型应该是,而不是文本/平原为浏览器可能会尝试打开该文件,而不是将其保存为一个附件。
为什么要将文件存储在数据库列中?数据库对于你真正需要查询的东西来说更好......对于诸如'给我所有过去30天的给定链接'或'用布艺室内装饰获得所有蓝色汽车'这样的查询是有用的。
OS文件系统可以更好地处理文件。如果您必须有关于该文件的记录,则可以放入一条记录,并将该文件的路径放入字符串列中。
这是项目的要求...我没有发言权。 谢谢 – Mithil 2008-11-17 21:45:08
如果你真的必须将文件存储在数据库中(我完全同意Will的说法,你不应该这么做),你可能想考虑实现一个单独的下载页面(例如getfile.aspx),它是负责根据ID从数据库中获取字符串,或许(getfile.aspx?fileId = 12345),设置适当的HTTP头并将内容直接输出到浏览器。通过设置内容类型标题,您应该能够强制浏览器将aspx页面看作txt文件或任何其他可识别的文件格式。
我强烈建议尝试将项目范围更改为不将文件存储在数据库中,但由于此方法可能会非常快速地变得非常混乱。
是的,多数民众赞成我在做什么,但问题是在实际的代码。我有一个文件流 oFileStream = System.IO.File.Open(sFullFilePath,IO.FileMode.Open,System.IO.FileAccess。阅读) 但我不能使用这个,因为我没有文件路径,因为我有一个字符串中的内容“sFileToBeProcessed” – Mithil 2008-11-17 21:59:24
它涵盖了数据库和类型blob ...应该很有用。
http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx
Nope..I要打开的文件作为附件(与储蓄的选择,节省等)。对不起,如果我的问题不清楚。 谢谢 – Mithil 2008-11-17 21:44:14