У меня есть файл на сервере, который я хочу отправить клиенту. Я отправлю его так
[HttpPost]
public async Task<IActionResult> EditRu([FromBody]IOptionsDiplom options, string key)
{
try
{
if (!FilesController.Files.Keys.Contains(key))
throw new Exception("Файл не существует на сервере");
options.Bytes = System.IO.File.ReadAllBytes(Path.Combine(UploadFolder, key + ".docx"));
byte[] bytes;
using (TaskModel task = new TaskModel(options, FilesFolder))
{
await Task.Run(() => task.EditRu());
bytes = System.IO.File.ReadAllBytes(task.PathFile);
}
FilesController.DeleteFile(key);
return File(bytes, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", key);
}
catch (Exception e)
{
return StatusCode(StatusCodes.Status500InternalServerError, e);
}
}
Я также пробовал и так
[HttpPost]
public async Task<IActionResult> EditRu([FromBody]IOptionsDiplom options, string key)
{
try
{
if (!FilesController.Files.Keys.Contains(key))
throw new Exception("Файл не существует на сервере");
string pathUploadFile= Path.Combine(UploadFolder, key + ".docx");
options.Bytes = System.IO.File.ReadAllBytes(pathUploadFile);
using (TaskModel task = new TaskModel(options, FilesFolder))
{
await Task.Run(() => task.EditRu());
await Task.Run(() => System.IO.File.Copy(task.PathFile, pathUploadFile, true));
}
return PhysicalFile(pathUploadFile, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
}
catch (Exception e)
{
return StatusCode(StatusCodes.Status500InternalServerError, e);
}
}
И по другому пробовал. У клиента я принимаю файл так
this.http.post("Diplom/EditRu", this.body, {
headers: this.headers(),
params: params
}).subscribe(
result => {
var contentType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
var blob = new Blob([result.arrayBuffer()], { type: contentType });
var downloadUrl = URL.createObjectURL(blob);
window.open(downloadUrl, "_blank");
},
error => {
alert("Не удалось отредактировать файл");
console.error(JSON.stringify(error));
});
Файл, который принимает клиент поврежден и не отправляется. Файл, который на сервере в порядке и прекрасно открывается. Я специально не удалял файл на сервере и открывал его, и останавливал отладку перед отправкой и открывал его, и оба раза на сервере он открывался просто отлично, но клиенту приходит уже поврежденный файл. Не могу понять я не правильно отправляю файл или принимаю его. То есть до этого
return File(bytes, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", key);
Или этого момента
return PhysicalFile(pathUploadFile, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
Все отлично, но у клиента уже файл не открывается. Работаю с Angular с ASP.NET.Core Web API
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброе время сутокНе могу победить одну задачку:
На вопрос подтолкнули ответы из вопросаИзменения элементов статического списка и вправду подхватываются, но что насчет изменения не элемента,...
При первом запуске игры в WebGL она кушает 500 мб памяти, и в общем, меня это устраиваетНо стоит нажать F5 и загрузить игру снова, как диспетчер...