0

ASP.NET MVC と Entity Framework のコード ファースト アプローチを使用しています。.docファイル (または.pdf) を SQL Serverにアップロードしたいと考えています。多くのフォーラムを検索して閲覧しましたが、Entity Framework コード ファースト アプローチを使用してファイルを SQL Server にアップロードする明確な解決策を見つけることができませんでした。

ファイルをアップロードするために次のコードを書きましたが、ファイルをデータベースに保存するときにエラーが発生します。

ここに次のコードがあります

コントローラーは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using FileuploadEF.Models;
namespace FileuploadEF.Controllers
{
    public class HomeController : Controller
    {
        FileEntities db = new FileEntities();

        public ActionResult Index()
        {
             return View();
        }

        public ActionResult About()
        {
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult upload()
        {
            foreach (string file in Request.Files)
            {
                var PostedFile = Request.Files[file];
                string filetype = Request.Files[file].ContentType;
                int filelength = Request.Files[file].ContentLength;
                Stream filestream = Request.Files[file].InputStream;
                byte[] filedata = new byte[filelength];
                string filename= Path.GetFileName(Request.Files[file].FileName);
                filestream.Read(filedata, 0, filelength);
                var data = new FileDump
                {
                    FileName = filename,
                    FileType = filetype,
                    FileContent = filedata
                };

                  db.FileDumps.Add(data);

                db.SaveChanges();
            }

            return View();
        }

    }
}

filedumpデータベースを作成するためのクラスは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace FinaleuploadEF.Models
{
    public class FileDump
    {
        public int Id { get; set; }
        public string FileName { get; set; }
        public string FileType { get; set; }
        public byte[] FileContent { get; set; }
    }
}

エンティティ クラスは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace FinaleuploadEF.Models
{
    public class FinalEntities : DbContext
    {
        public DbSet<FileDump> FileDumps { get; set; }

    }
}

接続文字列:

 <connectionStrings>
      <add name="FinalEntities"
       connectionString="Data Source=|DataDirectory|FinaleuploadEF.sdf"
       providerName="System.Data.SqlServerCe.4.0"/>
    </connectionStrings>

ファイルをデータベースに保存しているときに、次のエラーが発生します。

www.freeimagehosting.net/kmwts

誰かが上記の問題の解決策を提案できますか? または、上記のコードに必要な変更はありますか?

4

1 に答える 1

0

問題の切り分けを試みる必要があります。

ファイルの内容を保存せずに、最初にコードを実行してみてください。

それが機能する場合は、データを保存するコードを抽出し、コードで作成したバイト配列を保存する単体テストを記述します。

それが機能する場合は、ディスクからファイルを読み取って構築したバイト配列を保存する単体テストを作成します。

それが機能する場合は、コードを使用して、アップロードされたファイルをディスクに保存してみてください。

上記を実行することで、問題の根本原因を特定できるはずです。

于 2012-06-23T11:13:07.397 に答える