Следующий код находится в верхней части страницы, где вы загружаете файл. Обратите внимание, что вы должны изменить имена таблиц и полей в соответствии с вашей базой данных. Кроме того, вы должны убедиться, что форма, которая включает в себя элемент управления загрузкой, имеет атрибут 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
для файла изображения или в качестве URL-адреса для ссылки на файл, который необходимо загрузить, например файл PDF или Word. Если вы назовете этот файл обработчика «download.cshtml», ссылка на файл изображения, сохраненный в базе данных, должна выглядеть следующим образом:
<img src="download.cshtml?Id=@id" alt="" />
где значение параметра 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
, а не varbinary(max)
в SQL Server.
person
Mike Brind
schedule
13.10.2014
database
? - person EdSF   schedule 13.10.2014