1

ファイルをデータベースにアップロードする際に少し問題があります。以下にコードのスニペットを投稿します。

アップロードしているテーブルの構造は次のとおりです。

[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();
//

その他の考慮事項:

  1. 私が使用するのは、MVC3 + SQL Server 2000 です。
  2. アプリケーションをテスト環境 (ローカル コンピューター + データベース サーバー) で使用する場合、問題はありません。ファイルは正しく保存されます。
  3. アプリケーションを本番環境 (Web サーバー + データベース サーバー) で使用すると、ファイルが正しく保存されません。
  4. 運用サーバー上の 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"/>

    }

誰かが助けやアドバイスを提供できれば、とても感謝しています。

ありがとう。

4

2 に答える 2

0

問題は Chrome のバージョン (21.0.1171.0 DEV) でした。Windows 認証を使用してファイルをアップロードする Chrome の開発バージョンと IIS6 には問題があります。

Chrome 21 dev でフォームを送信すると、送信されたファイルの内容はすべてゼロになります。

19.0.1084.56 m の安定版をダウンロードしたところ、問題は解決しました。

詳細についてはhttp://code.google.com/p/chromium/issues/detail?id=128574

于 2012-06-13T16:59:05.600 に答える
0

最後のコメントによると、ファイルのアップロードの問題は IIS6 に関連している可能性が高く、実際には SQL サーバーとは何の関係もありません。IIS6 が正しく構成されていない場合、IIS6 にはばかげたファイル アップロード サイズの制限があります。

確認してください: iis6 でのファイル アップロード サイズの制限を増やします

より具体的には、あなたの場合: http://www.banmanpro.com/support2/File_Upload_limits.asp

于 2012-06-11T13:49:05.577 に答える