ファイルをデータベースにアップロードする際に少し問題があります。以下にコードのスニペットを投稿します。
アップロードしているテーブルの構造は次のとおりです。
[IDEnsayo] int NOT NULL,
[Nombre] varchar(256) NULL,
[Tipo] varchar(256) NULL,
[Longitud] int NULL,
[Contenido] image NULL
これがクラスです
public class Archivo
{
public string Nombre { get; set; }
public string Tipo { get; set; }
public long Longitud { get; set; }
public byte[] Contenido { get; set; }
}
アプリケーションを使用してエラーなしでファイルをアップロードできますが、データベースでは、ファイルは「Contenido」に「0x0000000000000000......」として保存されます。ファイルのアップロードに関連する他のすべての情報が正しくアップロードされます。
これは私のコントローラコードです:
public ActionResult Add(Ensayo Ensayo, HttpPostedFileBase uploadFile)
{
var ensayo = new Ensayo { IDEnsayo = Ensayo.IDEnsayo};
ensayo.Archivo.Longitud = uploadFile.ContentLength;
ensayo.Archivo.Nombre = uploadFile.FileName;
ensayo.Archivo.Tipo = uploadFile.ContentType;
byte[] tempFile = new byte[uploadFile.ContentLength];
uploadFile.InputStream.Read(tempFile, 0, uploadFile.ContentLength);
ensayo.Archivo.Contenido = tempFile;
ensayo.SaveArchivo();
//
その他の考慮事項:
- 私が使用するのは、MVC3 + SQL Server 2000 です。
- アプリケーションをテスト環境 (ローカル コンピューター + データベース サーバー) で使用する場合、問題はありません。ファイルは正しく保存されます。
- アプリケーションを本番環境 (Web サーバー + データベース サーバー) で使用すると、ファイルが正しく保存されません。
- 運用サーバー上の IIS6
アップデート
IE9 では動作しますが、Chrome では動作しません。
これは私の送信フォームコードです:
@using (Html.BeginForm("Add", "Archivos",FormMethod.Post, new { id = "attachment", enctype = "multipart/form-data" }))
{
@Html.HiddenFor(x => Model.IDEnsayo)
<input type="file" name="uploadFile" id="uploadFile" />
<input type="submit" value="Guardar" class="t-button"/>
}
誰かが助けやアドバイスを提供できれば、とても感謝しています。
ありがとう。