Захватите содержимое System.Web.HttpPostedFileBase и запишите на диск - PullRequest
0 голосов
/ 06 июня 2018

На самом деле не знаю, как это сделать, но мне нужно взять содержимое из опубликованного файла и записать его на диск.

Вот код, на который я смотрю.Это функция для загрузки файла:

[HttpPost]
public JsonResult UploadInvoice()
{
    foreach (var file in Request.Files.AllKeys)
    {
        var tempFile = Request.Files[file];
        if (tempFile != null && tempFile.ContentLength > 0)
        {

            var fileName = tempFile.FileName;

            string filePath = Path.Combine(HttpRuntime.AppDomainAppPath, "content\\files\\Customer-Returns\\Invoices");
            DirectoryInfo di = Directory.CreateDirectory(filePath);
            filePath = filePath + fileName;

            using (var fs = new FileStream(Request.Files[file], FileMode.Open, FileAccess.Read))
            {
                using (var ms = new MemoryStream())
                {
                    fs.CopyTo(ms);
                    byte[] rawdata = ms.GetBuffer();

                    using (var o = System.IO.File.Create(filePath))
                    {
                        ms.CopyTo(o);
                        fs.Close();
                        ms.Close();
                    }
                }
            }
        }
    }

    return Json(new { result = true });
}

У меня есть исключение здесь:

enter image description here

Не уверен, как именнопойти на это, и не могу найти четкий пример.Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 06 июня 2018

Хорошо, так что я поступил совершенно неправильно, и я не знал, что это будет так просто.

Как указывалось выше @mjwills, мне пришлось использовать метод SaveAs.Вот код

[HttpPost]
    public JsonResult UploadInvoice()
    {
        foreach (var file in Request.Files.AllKeys)
        {
            var tempFile = Request.Files[file];
            if (tempFile != null && tempFile.ContentLength > 0)
            {

                var fileName = tempFile.FileName;

                string filePath = Path.Combine(HttpRuntime.AppDomainAppPath, "content\\files\\Customer-Returns\\Invoices\\");
                DirectoryInfo di = Directory.CreateDirectory(filePath);
                filePath = filePath + fileName;

                Request.Files[file].SaveAs(filePath);
            }
        }

        return Json(new { result = true });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...