Как я могу загрузить файлы на ASP.NET MVC2? - PullRequest
2 голосов
/ 13 сентября 2010

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

Я успешно справился с управлением несколькими заголовками:

ComicViewModel.cs:

public class ComicViewModel
{
    [Key]
    public int Id { get; set; }

    [Required(ErrorMessage="A data não pode ficar em branco.")]
    [DisplayName("Data")]
    public DateTime Date { get; set; }

    public IList<LocalizedTextViewModel> Titles { get; set; }
}

LocalizedTextViewModel.cs:

public class LocalizedTextViewModel
{
    public CultureViewModel Culture { get; set; }

    [Required(ErrorMessage = "Este campo não pode ficar em branco.")]
    public string Text { get; set; }
}

CultureViewModel.cs:

public class CultureViewModel
{
    public int Id { get; set; }
    public string Abbreviation { get; set; }
    public string Name { get; set; }

    public CultureViewModel() { }

    public CultureViewModel(Database.Culture culture)
    {
        Id = culture.Id;
        Abbreviation = culture.Abbreviation;
        Name = culture.Name;
    }
}

Проблема в том, что я не могу понять, как управлять загрузкой комических изображений.Мне нужно загрузить более одного изображения, каждое из которых ссылается на свой язык.

У кого-нибудь есть идеи?

1 Ответ

1 голос
/ 13 сентября 2010

Вот пример загрузки нескольких файлов:

HTML:

<% using (Html.BeginForm("Upload", "File", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%><br />
    <input type="file" name="files" id="file1" size="25" />

    <input type="file" name="files" id="file2" size="25" /> 

    <input type="submit" value="Upload file" />      
<% } %>   

Контроллер:

[HttpPost]
public ActionResult Upload()
{
    foreach (string inputTagName in Request.Files)
    {
        HttpPostedFileBase file = Request.Files[inputTagName];
        if (file.ContentLength > 0)
        {
            string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads")
                    , Path.GetFileName(file.FileName));
            file.SaveAs(filePath);
        }
    }

    return RedirectToAction("Index");
}

Обновление: получение информации о загруженном файле

В следующем примере показано, как получить имя / тип / размер / расширение отправленного файла HttpPostedFileBase.

string filename = Path.GetFileName(file.FileName);

string type = file.ContentType;

string extension = Path.GetExtension(file.FileName).ToLower();

float sizeInKB = ((float)file.ContentLength) / 1024;

предположим, что вы загрузили файл somePicture.jpeg вывод будет.

filename  > somePicture.jpeg
type      > image/jpeg
extension > jpeg
sizeInKB  > // the file size.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...