以下代码位于您上传文件的页面顶部。请注意,您应该根据您的数据库修改表和字段名称。此外,您应该确保包含上传控件的表单的enctype
属性设置为multipart/form-data
:
@{
int id = 0;
var fileName = "";
var fileMime = "";
if (IsPost) {
var uploadedFile = Request.Files[0];
fileName = Path.GetFileName(uploadedFile.FileName);
if(fileName != String.Empty)
{
fileMime = uploadedFile.ContentType;
var fileStream = uploadedFile.InputStream;
var fileLength = uploadedFile.ContentLength;
byte[] fileContent = new byte[fileLength];
fileStream.Read(fileContent, 0, fileLength);
var db = Database.Open("FileUploading");
var sql = "INSERT INTO Files (FileName, FileContent, MimeType) VALUES (@0,@1,@2)";
db.Execute(sql, fileName, fileContent, fileMime);
}
}
}
要显示数据库中的文件,您需要一个单独的“处理程序”文件,其中仅包含以下代码:
@{
int id = 0;
if(Request["Id"].IsInt()){
id = Request["Id"].AsInt();
var db = Database.Open("FileUploading");
var sql = "Select * From Files Where FileId = @0";
var file = db.QuerySingle(sql, id);
if(file.MimeType.StartsWith("image/")){
Response.AddHeader("content-disposition", "inline; filename=" + file.FileName);
} else {
Response.AddHeader("content-disposition", "attachment; filename=" + file.FileName);
}
Response.ContentType = file.MimeType;
Response.BinaryWrite((byte[])file.FileContent);
}
}
此文件用作src
图像文件的属性或用作指向应下载文件(如 PDF 或 Word 文件)的链接的 URL。如果将此处理程序文件称为“download.cshtml”,则保存在数据库中的图像文件的链接应如下所示:
<img src="download.cshtml?Id=@id" alt="" />
其中 Id 参数值是数据库中文件的 ID。下载链接如下所示:
<a href="download.cshtml?Id=@id">Click Here</a>
所有这些都取自我的文章: http: //www.mikesdotnetting.com/Article/148/Save-And-Retrieve-Files-From-a-Sql-Server-CE-Database-with-WebMatrix。介绍 SQL Compact 数据库的文章之间的唯一区别是 SQL CE 中文件的数据类型与image
SQL varbinary(max)
Server 中的不同。