как переименовать имя файла загрузки после добавления его в папку wwwroot и сохранить также старое имя - PullRequest
1 голос
/ 24 июня 2019

Я создал контроль загрузки файлов с ядром angular и asp.net, и мне нужно переименовать имя файла загрузки перед добавлением его в wwwroot, чтобы решить проблему, когда пользователь загружает другой файл с тем же именем, но я обнаружил, что FileName proberty только для чтения в angualr иЯдро asp.net также

угловой код

  upload() {
    let selectedFile = this.uploader.queue.find(s => s.id == id);
    if (selectedFile) {
      const formData = new FormData();
      formData.append(selectedFile.file.name, selectedFile.file);
      const uploadReq = this.uploadSrv.HTTPRequestServ(
        "POST",
        this.pathAPI + `api/Upload/upload`,
        formData
      );

      this.mySubscription = this.http.request(uploadReq).subscribe(event => {
        debugger;

      });
    }
  }

код ядра asp.net

 public ActionResult upload()
        {
            try
            {
                var file = Request.Form.Files[0];
                string folderName = "Upload";
                string webRootPath = _hostingEnvironment.WebRootPath;

                string newPath = Path.Combine(webRootPath, folderName);
                if (!Directory.Exists(newPath))
                {
                    Directory.CreateDirectory(newPath);
                }

                if (file.Length > 0)
                {

                    string fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                    string fullPath = Path.Combine(newPath, fileName);

                    using (var stream = new FileStream(fullPath, FileMode.Create))
                    {
                        file.CopyTo(stream);

                    }
                }

                return Json("Upload Successful.");
            }
            catch (Exception ex)
            {
                return Json("Upload Failed: " + ex.Message);
            }
        }

1 Ответ

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

В вашем коде ASP.NET Core вы должны изменить имя при копировании файла:

using (var stream = new FileStream(Path.Combine(newPath, "<my_file_name>"), FileMode.Create)
{
    file.CopyTo(stream);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...