Для хранения слова doc в SQL у меня есть это:
byte[] bytes = new byte[uploader.UploadedFiles[0].InputStream.Length];
var storedFile = new email_attachment();
string strFullPath = uploader.UploadedFiles[0].FileName;
string strFileName = Path.GetFileName(strFullPath);
storedFile.email_attachment_id = Guid.NewGuid();
storedFile.emailer_id = new Guid(dropMailers.SelectedValue);
storedFile.file_name = strFileName;
storedFile.file_data = bytes;
db.email_attachments.InsertOnSubmit(storedFile);
db.SubmitChanges();
Чтобы вернуть его, я использую это:
var storedFile = db.email_attachments.Where(a => a.email_attachment_id.ToString() == dropAttachments.SelectedValue).Single();
string strPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Storage/Email/Attachments");
File.WriteAllBytes(Path.Combine(strPath, storedFile.file_name), storedFile.file_data.ToArray());
System.IO.FileInfo file = new System.IO.FileInfo(Path.Combine(strPath, storedFile.file_name));
if (file != null && file.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.End();
}
else
{
//Response.Write("This file does not exist.");
}
Проблемы: Документ, который я получаю, пусти я также считаю, что сохранение его в файловой системе и последующая запись в поток ответов не очень эффективно.Я думаю, что этот шаг можно пропустить.Любая помощь или информация будет высоко ценится.