Невозможно загрузить файл как FormData на ASP.net из Angular - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь загрузить файл из своего углового кода в серверную часть ASP.net.

Мой угловой код отправляет объект с использованием FormData:

public uploadFiles(files) {
  console.log(files);
  if(files.length < 1) return;

  const formData = new FormData();

  files.forEach(file => {
    console.log(file);
    formData.append(file.name, file);
  })


  this._http.postFile('/order-processing/import-orders','application/x-www-form-urlencoded' ,formData).pipe(finalize(() => {
     console.log("Finalized");
  })).subscribe((val: any) => {
      console.log('ORDER SUBMITTED', val);     
  }, error => {
     console.log(error);            
  });
}

С помощью метода post fileвыглядит как:

public postFile(path: string, contentType:string, body: FormData) : Observable<any> {

let headers = {
  'Content-Type': contentType,
  'Authorization': this.authToken
}
return this._http.post(environment.API_URL + path, body, {
  headers
});

}

Моя конечная точка ASP.net выглядит следующим образом:

    [HttpPost, Route("hospitality/order-processing/import-orders")]
    [RequestSizeLimit(2147483648)]
    [DisableRequestSizeLimit]
    public IActionResult UploadFile()
    {
        try
        {
            //var req = Request.Form.Files;
            var file = Request.Form.Files;
            string folderName = "Uploads";
            string webRootPath = _hostingEnvironment.WebRootPath;
            string newPath = Path.Combine(webRootPath, folderName);
            if (!Directory.Exists(newPath))
            {
                Directory.CreateDirectory(newPath);
            }

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

Если я проверяю вкладку сети в моем браузере при отправке файла, он говорит, что мой объект находится в вызове, отлично, но по какой-то причине он не обнаруживается на бэкэнде, и когда я перебираю код, его там нет.

При небольшом изменении этого кода я получаю разные ошибки.Ошибка для кода в том состоянии, в котором он находится сейчас: «Ключ формы или ограничение длины значения превышено 2048», однако иногда я получаю ошибки массива за пределами границ или ошибки превышения границы содержимого, этого достаточно, чтобы заставить вас захлопнуть васлицо в клавиатуру постоянно.

Весь смысл в том, чтобы иметь возможность загружать файл Excel в код ASP.net, работающий в лямбда-выражении AWS, который затем вставляет строки в базу данных RDS.Я иду об этом правильным путем?Есть ли лучший способ достичь того, что я пытаюсь сделать?Если нет, то что не так с моим кодом, который не позволяет загрузить файл в веб-API?!

Спасибо

1 Ответ

0 голосов
/ 20 марта 2019

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

Попробуйте установить RequestFormLimits и проверьте, помогает ли это.

[HttpPost, Route("hospitality/order-processing/import-orders")]
[RequestFormLimits(KeyLengthLimit = 8192, ValueLengthLimit = 8192)]
public IActionResult UploadFile()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...