Arhn - архитектура программирования

mvc3 получить полный путь, используя HttpPostedFileBase

У меня есть кнопка обзора, и я сохраняю ее в базе данных.

используя mvc3

Посмотреть

 @using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = multipart/form-data" }))
{
<input type="file" name="file" />
}

контроль

public ActionResult Upload(FormCollection collection HttpPostedFileBase file)
      string filefullpath = Path.GetFullPath(file.FileName);

Path.GetFullPath возвращает только имя файла, и мой код дает сбой, потому что он ожидает полный путь к файлу.

Я попытался протестировать, пройдя тестовый полный путь C:\filename.jpg, и это сработало. поэтому мне не хватает полного пути для передачи функции....

Как получить полный путь от кнопки обзора, выбранной пользователем.

Спасибо,



Ответы:


1

Насколько я знаю, вы не можете получить полный путь. Это как-то связано с безопасностью.

В любом случае, вам это не нужно, так как вы будете сохранять поток куда угодно.

Обновление:

Некоторый голый код:

var file = Request.Files[0];

if (file == null || file.ContentLength == 0)
{
    throw new InvalidOperationException("No file has been selected for upload or the file is empty.");
}

file.SaveAs(path);  // <-- path is somewhere on you *local* drive

или в базу данных:

Структура данных

CREATE TABLE [dbo].[SystemImage](
[Id] [uniqueidentifier] NOT NULL,
[ImageData] [image] NOT NULL,
CONSTRAINT [PK_SystemImage] PRIMARY KEY CLUSTERED 
(
[Id] ASC
) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

ALTER TABLE [dbo].[SystemImage] ADD  CONSTRAINT [DF_SystemImage_Id]  DEFAULT (newid()) FOR [Id]
GO

Код

using (var connection = new SqlConnection(@"data source=.\SQLEXPRESS;initial catalog=ImageTest;Integrated Security=SSPI;"))
{
    connection.Open();

    using (var command = connection.CreateCommand())
    {
        command.CommandType = CommandType.Text;
        command.CommandText = "insert into SystemImage (ImageData) values (@ImageData)";

        command.Parameters.AddWithValue("ImageData", file.InputStream.ToBytes());
        command.ExecuteNonQuery();
    }
}

Чтобы узнать о методе расширений Stream.ToBytes(), перейдите по этой ссылке:

http://shuttle.codeplex.com/SourceControl/changeset/view/3f7f1f2cf2c0#Shuttle.Core%2fsource%2fShuttle.Core.Infrastructure%2fExtensions%2fStreamExtensions.cs

16.04.2012
  • когда я пытаюсь преобразовать файл в растровое изображение, я получаю сведения об исключении: System.ArgumentException: недопустимый параметр. код, который я использую: var i = new Bitmap (filefullpath); есть идеи почему? когда я указываю полный путь, он работает, что я делаю неправильно? Спасибо 16.04.2012
  • или есть лучший способ сохранить файл в базе данных? 16.04.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..