#asp.net #angular #asp.net-web-api #file-upload
#asp.net #угловой #asp.net-веб-api #файл-загрузить
Вопрос:
итак, у меня есть старый угловой проект 2-rc4, который работает asp.net веб-api 4, я пытаюсь реализовать загрузку файлов, и у меня возникла проблема с отправкой файла с внешнего интерфейса.
я получаю ошибку unexpected end of mime multipart stream
это происходит только в клиентском проекте, если я отправлю запрос от почтальона, файл будет успешно загружен, есть идеи, что может привести к этому?
То, что я пробовал до сих пор
Я читал, что нам, возможно, потребуется добавить список отзыва сертификатов в конец потока, чтобы реализовать это, что все еще не решило проблему
reqStream.Position = 0; MemoryStream tempStream = new MemoryStream(); reqStream.CopyTo(tempStream); tempStream.Seek(0, SeekOrigin.End); StreamWriter writer = new StreamWriter(tempStream); writer.WriteLine(); writer.Flush(); tempStream.Position = 0; StreamContent streamContent = new StreamContent(tempStream); foreach (var header in Request.Content.Headers) { streamContent.Headers.Add(header.Key, header.Value); }
Вот исходный код, который отправляет запрос
let body = JSON.stringify(jobFilesUpload); const fileHeaders = new Headers(); fileHeaders.append('Accept', '*/*'); fileHeaders.append('Access-Control-Allow-Origin', '*'); fileHeaders.append('Content-Type', 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'); this.authHttp.post(this.authService.apiUrl "api/upload" jobFilesUpload.OBPJobId, body, { headers: fileHeaders }).subscribe(do more stuff here)
Ответ №1:
Изменил способ вызова конечной точки для использования XHR
var fd = new FormData(); for (var i in this.FilesList) { fd.append("fileToUpload", this.FilesList[i], this.FilesList[i].name); this.FilesList[i].Comments = this.FileComments; } let xhr = new XMLHttpRequest(); let url = this.authService.apiUrl "api/SaveOBPJobFiles"; xhr.open("POST", url, true); xhr.setRequestHeader("Authorization", "Bearer " this.authService.userToken.JWT); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.onreadystatechange = function () { if (xhr.readyState === 4 amp;amp; xhr.status === 200) { // Display success or failure to user var response = JSON.parse(xhr.response); if (response.success == true) { self.Item.OBPJobFiles = response.obpJobFiles; self.Item.FileCount = response.obpJobFiles.length; self.ClearOBPFiles(); console.log("File Success"); console.log(response.productionFiles); } else { self.toastrService.Error(response.message); } self.OBPFileProcessing = false; setTimeout(() =gt; { self.systemService.StopLadda(); }, 1); } else { self.OBPFileProcessing = false; setTimeout(() =gt; { self.systemService.StopLadda(); }, 1); } } xhr.send(fd);
казалось, что это исправило первоначальную проблему для всех, кто еще боролся.