当社の内部 Web サイトの 1 つで、ユーザーはドキュメントをアップロードし、ファイルを SQL 2008 データベースに保存できます。私たちが直面している問題は、docx を開こうとすると常に壊れていると表示されることです。[OK] をクリックすると、正常に開きます。私が間違っていることは何ですか?(.doc を含む他のすべてのファイル タイプは正常に保存されます)
アップロード コード:
// save the files
string mimeType = Request.Files[i].ContentType;
string filePath = Path.GetFileName(Request.Files[i].FileName);
string fileName = Path.GetFileName(Request.Files[i].FileName);
Stream fileStream = Request.Files[i].InputStream;
long fileLength = Request.Files[i].InputStream.Length;
if (fileLength > 0)
{
byte[] fileData = new byte[fileLength];
fileStream.Read(fileData, 0, (int)fileLength);
_fileRepo.SaveFileToDatabase(_currentUser.Username, t.EncounterId, fileName, filePath, mimeType, fileData);
}
それをデータベースに挿入するコード
tblDocumentImage img = new tblDocumentImage();
img.DocumentImage = file; //DB field datatype = Image
...
...
_ctx.tblDocumentImage.InsertOnSubmit(img);
_ctx.SubmitChanges();
ファイルをバックアウトするコード
public Document DocumentById(int docID)
{
Document doc = new Document(docID;
...
var f = _ctx.tblDocumentImage.Where(di => di.DocumentID == docID).FirstOrDefault();
doc.File = (byte[])f.DocumentImage.ToArray();
return doc;
}
public ActionResult Download(int id, string filename)
{
Document doc = null;
if (id != 0)
{
doc = _fileRepo.DocumentById(id);
}
if (doc != null)
{
return File(doc.File, doc.ContentType, doc.FilenameWithExtension);
}
return File(new byte[0], "text/html");
}