У меня есть конечная точка, на которую файлы отправляются с веб-сайта - через поле <input>
.Код Angular выглядит следующим образом ...
@Injectable()
export class FileUploadService {
constructor(private http: HttpClient) { }
uploadFiles(files: any): Promise<void> {
return new Promise<void>(async (resolve, reject) => {
var formData = new FormData();
for (let file of files)
formData.append(file.name, file);
const uploadReq = new HttpRequest('POST', `localhost:4200/api/postfiles`, formData, {
reportProgress: true,
});
this.http.request(uploadReq).subscribe(event => {
if (event.type === HttpEventType.UploadProgress)
{
console.log(`Progress: ${Math.round(100 * event.loaded / event.total)}`);
}
else if (event.type === HttpEventType.Response)
console.log(`Done`);
resolve();
});
});
}
}
... и конечный элемент C # выглядит следующим образом ...
[AllowAnonymous]
[HttpPost("[action]")]
[RequestSizeLimit(2147483640)]
public async Task<IActionResult> PostFiles()
{
try
{
IFormFileCollection files = Request.Form.Files;
if (files == null || files.Count == 0)
{
return BadRequest("No files received");
}
var blobs = new List<FileBlob>();
foreach (var formFile in files)
{
//formFile.
if (formFile.Length > 0)
{
var stream = new MemoryStream();
await formFile.CopyToAsync(stream);
blobs.Add(new FileBlob(formFile.FileName, stream));
}
}
if (await _blobStorage.SaveFilesAsync(blobs, "relativeTestPath"))
{
return Ok();
}
return BadRequest("Files could not be stored");
}
catch (Exception exp)
{
Debug.WriteLine("Exception generated when uploading file - " + exp.Message);
string message = $"file / upload failed!";
return BadRequest(message);
}
}
Теперь я хочу вызвать ту же конечную точку из узлаПриложение .js, которое читает файлы с помощью метода
fs.readFileSync()
, но я не знаю, как подготовить содержимое файла и отправить его в ту же конечную точку PostFiles.
Есть идеи?