Как прочитать файл с диска и передать его в WebAssembly с помощью Go? - PullRequest
0 голосов
/ 21 января 2019

В частности, как связать <input type="file"> с этой функцией в Go?Я знаю, что есть пакет "syscall / js", но я не нашел примеров с чтением файла.

func parseCSVFile(filePath string) []LabelWithFeatures {
    fileContent, _ := ioutil.ReadFile(filePath)
    lines := bytes.Split(fileContent, newline)
    numRows := len(lines)

    labelsWithFeatures := make([]LabelWithFeatures, numRows-2)

    for i, line := range lines {
        // skip headers
        if i == 0 || i == numRows-1 {
            continue
        }
        labelsWithFeatures[i-1] = NewLabelWithFeatures(bytes.Split(line, comma))
    }
    return labelsWithFeatures
}

1 Ответ

0 голосов
/ 24 января 2019

Вы не можете получить доступ к файловой системе в браузере. wasm_exec.js используется для выполнения веб-сборки Go в браузере, он копирует некоторые функции файловой системы, но я не думаю, что это очень полезно для вас: https://github.com/golang/go/blob/9d23975d/misc/wasm/wasm_exec.js#L41-L73

Метод чтения файла даже возвращает ошибку по умолчанию.

Вы упомянули <input type="file">. Вы можете получить байты из загруженного файла: Получение байтового массива через тип ввода = файл . Затем вы можете передать эти байты во время выполнения Golang wasm.

Определите глобальный обратный вызов syscall / js в своем коде Go и вызовите его из браузера, чтобы передать байты во время выполнения Go.

Я бы искал посты о том, как определять обратные вызовы из среды выполнения Go. Также обратите внимание на изменения между ходом 1.11 и 1.12, API имеет критические изменения.

...