Как изменить имя загруженного файла и как получить это имя в веб-интерфейсе - PullRequest
0 голосов
/ 14 мая 2019

Хей, в моем основном проекте asp.net есть контроллер загрузки файлов.Я хочу изменить файл на уникальное имя (например: текущие данные + время + уникальный идентификатор) и вернуться к этому имени для внешнего приложения Angular.

Угловой 7 cli ASP.net Core v2.2

Контроллер - Внутренняя часть

    [Route("CustomerFileUpload")]
    [HttpPost, DisableRequestSizeLimit]
    public IActionResult Upload()
    {
      try
         {
          var file = Request.Form.Files[0];
          var folderName = Path.Combine("Upload_files", "Images");
          var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);

          if (file.Length > 0)
          {
             var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
              var fullPath = Path.Combine(pathToSave, fileName);
              var dbPath = Path.Combine(folderName, fileName);

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

                    return Ok(new { dbPath });
                }
                else
                {
                    return BadRequest();
                }
            }
            catch (Exception)
            {
                return StatusCode(500, "Internal server error");
            }
        }

Statup.cs - Внутренняя часть

    app.UseStaticFiles();
    app.UseStaticFiles(new StaticFileOptions()
    {
       FileProvider = new 
       PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"Upload_files")),
       RequestPath = new PathString("/Upload_files")
     });

Часть внешнего интерфейса (register-component.ts)

    public uploadFile (files){
     if (files.length === 0) {
      return;
     }

     let fileToUpload = <File>files[0];
     const ImageData = new FormData();
     ImageData.append('file', fileToUpload, fileToUpload.name);

     this.http.post('https://localhost:44301/api/Customer/CustomerFileUpload', ImageData)
      .subscribe(response => {
        console.log("image upload ----> "+response) 
      });
     }

Часть внешнего интерфейса (register-component.html)

<input type="file" #file placeholder="Choose file" >
<button type="button" class="btn btn-primary" (click)="uploadFile(file.files)"> Upload </button>

1 Ответ

0 голосов
/ 15 мая 2019

Вы можете использовать

return Ok(dbPath);

Так что вам не нужно использовать новое ключевое слово здесь, как это

new { dbPath }

Затем в своем угловом приложении добавьте что-то вроде этого

const httpOptions = {
    headers: new HttpHeaders({
      'Content-Type':  'application/json'
    }),
    observe: 'response'
};

this.http.post('https://localhost:44301/api/Customer/CustomerFileUpload', ImageData, httpOptions)
 .subscribe(response => {
   console.log("image upload ----> "+response) 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...