.Net MVC не может загрузить файл из-за неправильного пути к файлу - PullRequest
0 голосов
/ 11 июня 2019

Я изучаю MVC и у меня не работает приведенный ниже код:

@{
    ViewBag.Title = "Index";
}
@using (Html.BeginForm("UploadAsync", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div class="fileUpload btn btn-default">
        <span>Select Files</span><input type="file" id="file" name="selectFiles" class="upload" onchange="DisplayFilesToUpload()" multiple />
    </div>
    <p id="FilesToUpload"></p>
}

<script>
    function DisplayFilesToUpload() {
        var element = document.getElementById("file");
        var html = "";

        html = "<h3>Image(s) to Upload</h3>"
        for (var i = 0; i < element.files.length; i++) {
            html += "<strong>" + (i + 1) + "</strong>. File: ";
            var file = element.files[i];
            if ('name' in file) {html += file.name + " (";}
            if ('size' in file) {html += "size: " + file.size + " bytes)<br>";}
        }
        html += "<div class='fileUpload btn btn-default'><span>Upload</span><input type='submit' class='upload' value='Upload'/></div>"
        document.getElementById("FilesToUpload").innerHTML = html;
    }
</script>

И соответствующий контроллер показан ниже:

[HttpPost]
        public async Task<ActionResult> UploadAsync()
        {
            try
            {
                HttpFileCollectionBase files = Request.Files;
                int fileCount = files.Count;

                if (fileCount > 0)
                {
                    for (int i = 0; i < fileCount; i++)
                    {
                        CloudBlockBlob blob = blobContainer.GetBlockBlobReference(GetRandomBlobName(files[i].FileName));
                        await blob.UploadFromFileAsync(files[i].FileName, FileMode.Open);
                    }
                }
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ViewData["message"] = ex.Message;
                ViewData["trace"] = ex.StackTrace;
                return View("Error");
            }            
        }

Каждый раз, когда я загружаю файл, яполучите следующее сообщение об ошибке:

Произошла ошибка при обработке вашего запроса: не удалось найти файл 'C: \ Program Files (x86) \ IIS Express \ some.png'.

Как это решить?

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Вы можете сначала сохранить файл на своем сервере.

Request.Files[0].SaveAs(@"C:\Intel\new_file_name.png");
await blob.UploadFromFileAsync(@"C:\Intel\new_file_name.png");

или загрузите поток файлов напрямую.

await blob.UploadFromStreamAsync(Request.Files[0].InputStream);
0 голосов
/ 12 июня 2019

Попробуйте следующее:

[HttpPost]
public async Task<ActionResult> UploadAsync(HttpPostedFileBase[] files)
{
    // You can access each file with
    foreach (HttpPostedFileBase file in files)  
    {
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...