LINQ не предоставляет тип данных byte [] для хранения файлов - PullRequest
0 голосов
/ 12 октября 2011

Я пытаюсь сохранить файл в базе данных SQL Server и использую ASP.NET MVC 3 с LINQ to SQL в C #.Когда я пытаюсь установить тип данных столбца в byte [], он говорит, что это недопустимый тип данных.Вместо этого использование типа данных vrabinary (MAX) кажется логичным.

Цель состоит в том, чтобы хранить файлы PDF в базе данных, которую пользователь выбрал для загрузки, используя загрузчик файлов HTTP.Ошибка возникает во время назначения переменной-члена LINQ, которая ссылается на столбец, в котором должен храниться файл.

Ошибка 3 Не удается неявно преобразовать тип 'System.Web.HttpPostedFileBase' в 'System.Data.Linq.Binary 'C: \ Users \ Аарон Паттен \ Documents \ Visual Studio 2010 \ Projects \ MyApp \ MyApp \ Controllers \ MyController.cs 66 31 MyApp

Я не нашел много вдругие люди сталкиваются с этой проблемой, так что я думаю, что должно быть что-то, чего мне не хватает, что слишком элементарно для кого-либо, чтобы публиковать сообщения.

Мой контроллер:

    public ActionResult UploadPDF()
    {
        List<ViewDataUploadFilesResult> r = new List<ViewDataUploadFilesResult>();

        HttpPostedFileBase hpf;// = Request.Files[file] as HttpPostedFileBase;

        foreach (string file in Request.Files)
        {
            hpf = Request.Files[file] as HttpPostedFileBase;
            if (hpf.ContentLength == 0)
                continue;
            string savedFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "images\\" + Path.GetFileName(hpf.FileName));
            hpf.SaveAs(savedFileName);

            r.Add(new ViewDataUploadFilesResult()
            {
                Name = savedFileName,
                Length = hpf.ContentLength
            });
        }

        MyApp.Models.MyAppDataContext db = new MyApp.Models.MyAppDataContext();

        MyApp.Models.PDFFile myPDFFile = new MyApp.Models.PDFFile();

        myPDFFile.Content = hpf;
        db.questions.InsertOnSubmit(myPDFFile);
        db.SubmitChanges();

        return View("UploadPDF", r);
    }

Как правильнообо всем этом?

PS: Как отобразить PDF как внедренный объект, не сохраняя его на сервере?

DAP

Ответы [ 2 ]

7 голосов
/ 12 октября 2011

Сообщение об ошибке говорит вам, что не так ... вы устанавливаете Content = hpf. hpf является HttpPostedFileBase, поэтому сначала его необходимо преобразовать в байт []. Сделайте это, прочитав байт [] из потока hpf.

myPDFFile.Content = new BinaryReader(hpf.InputStream).ReadBytes(hpf.InputStream.Length)

0 голосов
/ 12 октября 2011

В конструкторе сущностей LINQ to SQL измените поле, вызывающее проблемы, с System.Data.Linq.Binary на тип System.Byte[].Преобразование будет подразумеваться при отправке.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...