Загрузка файла / Загрузка образцов в ASP.NET MVC2? - PullRequest
0 голосов
/ 18 ноября 2010

Я хочу знать две вещи о ASP.NET MVC2, которые я исследовал в Google, но все еще сбивает с толку. Надеюсь, я смогу найти ясный и ясный ответ здесь.

Во-первых, как загрузить файл на сервер с пользовательским путем к файлу. (Например, в / Content / Files)

Во-вторых, как загрузить этот файл, поскольку URL-адрес применил URL Rounting, как сопоставить их?

Спасибо за ваши ответы!

1 Ответ

1 голос
/ 18 ноября 2010

Для загрузки вы будете использовать что-то вроде этого.

<form action="/MyController/SaveDocuments/" method="post" enctype="multipart/form-data">

        <label for="file1">Document 1</label>
        <input type="file" id="file1" name="file1" />

</form>

А вот код на контроллере для сохранения файла:

     public Document[] SaveDocuments(HttpRequestBase iHttpRequest, Instruction instruction)
    {
        List<Document> documents = new List<Document>();

        foreach (string inputTagName in iHttpRequest.Files)
        {
            HttpPostedFile file = iHttpRequest.Files[inputTagName];
            if (file.ContentLength > 0)
            {
                if (Path.GetExtension(file.FileName).Length == 0)
                {
                    throw new ValidationException(string.Format("File '{0}' has no extension (e.g. .doc .pdf)", file.FileName));
                }
                string filePath = documentService.BuildDocumentPath(instruction.InstructionId, file.FileName);
                file.SaveAs(filePath);

                documents.Add(new Document
                {
                    Filename = Path.GetFileName(file.FileName),
                    Path = filePath
                });
            }
        }

        return documents.ToArray();
    }

Что касается загрузки, скажем, у вас есть каталог "~ / Content / Files" ...

Вы просто должны исключить их в своем маршруте.

routes.IgnoreRoute("Content/{*pathInfo}");
...