У меня есть бинарный файл, который я хочу отправить через ajax-вызов обратно на веб-сайт. Для этого у меня есть следующий код:
[Microsoft.AspNetCore.Mvc.Route("api/BIM/GetModifiedRevitFile")]
public ActionResult GetModifiedRevitFile(string json)
{
string tmppath = Path.GetTempPath();
var fileVirtualPath = tmppath + "result.rvt";
WorkItemHandler.ExecuteWorkItem(fileVirtualPath);
var res= PhysicalFile(fileVirtualPath, "application/octet-stream", Path.GetFileName(fileVirtualPath));
return res;
и код vue / javascript:
AskToStoreFile: function (file, self) {
alert("asking stuff")
alert(file.responseText);
var saveByteArray = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, name) {
var blob = new Blob(data, { type: "octet/stream" }),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = name;
a.click();
window.URL.revokeObjectURL(url);
};
}());
saveByteArray([file.responseText], 'example.dat');
},
UploadLightsToServer: function() {
var self = this;
$.ajax({
type: "GET",
timeout: 12000000,
url: 'api/BIM/GetModifiedRevitFile',
contentType: "application/octet-stream"
dataType: "application/octet-stream",
success: function (data) {
self.AskToStoreFile(data, self);
},
error: function (data) {
self.AskToStoreFile(data,self)
alert("failed to load data" + JSON.stringify(data));
}
});
},
StoreLightsInRevit: function() {
alert("doing a revit");
this.UploadLightsToServer();
},
Теперь этот код отправляет файл в основном корректно, однако в нем много символов бинарности, таких как
ÐÏà¡ ± A
становится
ࡱ
Я знаю, что это, вероятно, какая-то проблема с кодировкой, но я не знаю, как это исправить.