Сообщение Как передавать файлы между js и webassembly от 22.10.2023 10:03
Изменено 22.10.2023 11:06 bnk
Как передавать файлы между js и webassembly
Разбираюсь тут с поддержкой webassembly [JSImport]/[JSExport],
В .NET 7 ее наконец отцепили от непонятной штуки в виде блазора. Блазор не нужен (tm), компиляция dotnet в webassembly нужна
https://www.meziantou.net/using-dotnet-code-from-javascript-using-webassembly.htm
Как передавать файлы (блобы) между js и webassembly? Если использовать byte[] это нормально?
Условный код ниже
C#
JS
Вообще глобальная цель — заюзать библиотеку OpenXml прямо из браузера, без отправки файлов на сервер.
В .NET 7 ее наконец отцепили от непонятной штуки в виде блазора. Блазор не нужен (tm), компиляция dotnet в webassembly нужна
https://www.meziantou.net/using-dotnet-code-from-javascript-using-webassembly.htm
Как передавать файлы (блобы) между js и webassembly? Если использовать byte[] это нормально?
Условный код ниже
C#
public partial class MyFileProcessor
{
// Экспортируем нашу функцию. Что она должна принимать в качестве параметра ("blob")?
[JSExport]
internal static string ProcessFile(blob) //<< какой тип должен иметь blob?
{
}
}
JS
...
const dotnetcode = await getAssemblyExports(config.mainAssemblyName);
const file = new Blob(...) //< или чем он должен быть?
...
// вызываем метод
const result = dotnetcode.MyFileProcessor.ProcessFile(file);
Вообще глобальная цель — заюзать библиотеку OpenXml прямо из браузера, без отправки файлов на сервер.
Как передавать файлы между js и webassembly
Разбираюсь тут с поддержкой webassembly [JSImport]/[JSExport],
В .NET 7 ее наконец отцепили от непонятной штуки в виде блазора. Блазор не нужен (tm), компиляция dotnet в webassembly нужна
https://www.meziantou.net/using-dotnet-code-from-javascript-using-webassembly.htm
Как передавать файлы (блобы) между js и webassembly? Условный код ниже
C#
JS
Вообще глобальная цель — заюзать библиотеку OpenXml прямо из браузера, без отправки файлов на сервер.
Пока сделал byte[] (первое, что работает), но как-то это криво, несколько приседаний (конвертаций) на ровном месте?
В .NET 7 ее наконец отцепили от непонятной штуки в виде блазора. Блазор не нужен (tm), компиляция dotnet в webassembly нужна
https://www.meziantou.net/using-dotnet-code-from-javascript-using-webassembly.htm
Как передавать файлы (блобы) между js и webassembly? Условный код ниже
C#
public partial class MyFileProcessor
{
// Экспортируем нашу функцию. Что она должна принимать в качестве параметра ("blob")?
[JSExport]
internal static string ProcessFile(blob) //<< какой тип должен иметь blob?
{
}
}
JS
...
const dotnetcode = await getAssemblyExports(config.mainAssemblyName);
const file = new Blob(...) //< или чем он должен быть?
...
// вызываем метод
const result = dotnetcode.MyFileProcessor.ProcessFile(file);
Вообще глобальная цель — заюзать библиотеку OpenXml прямо из браузера, без отправки файлов на сервер.
Пока сделал byte[] (первое, что работает), но как-то это криво, несколько приседаний (конвертаций) на ровном месте?
public partial class MyFileProcessor
{
[JSExport]
internal static string ProcessFile(byte[] data) { ... }
}
const file = new File(["Hello world"], "hello.txt");
const data = new Uint8Array(await file.arrayBuffer());
const result = dotnetcode.MyFileProcessor.ProcessFile(data)