Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Go从磁盘读取文件并将其传递给WebAssembly?_Javascript_Go_Webassembly - Fatal编程技术网

Javascript 如何使用Go从磁盘读取文件并将其传递给WebAssembly?

Javascript 如何使用Go从磁盘读取文件并将其传递给WebAssembly?,javascript,go,webassembly,Javascript,Go,Webassembly,具体来说,如何在Go中使用此功能连接? 我知道有“syscall/js”包,但我没有找到任何读取文件的示例 func parseCSVFile(filePath string) []LabelWithFeatures { fileContent, _ := ioutil.ReadFile(filePath) lines := bytes.Split(fileContent, newline) numRows := len(lines) labelsWithFea

具体来说,如何在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
}

您无法在浏览器中真正访问文件系统
wasm_exec.js
用于在浏览器中执行Go webassembly,它模拟了一些文件系统功能,但我认为它对您不是很有用:

默认情况下,file read方法甚至会返回一个错误

您提到了
。您可以从上载的文件中获取字节:。然后可以将这些字节传递给Golang wasm运行时

在Go代码中定义一个全局syscall/js回调,并从浏览器中调用它,将字节向下传递给Go运行时


我将寻找关于如何在Go运行时中定义回调的博客文章。还要注意GO1.11和1.12之间的变化,api有突破性的变化

出于安全原因,您无法在浏览器中与本地文件系统交互。可能您需要使用
syscall/js
@Adrian调用
FileReader
JavaScript API()。当然可以,您只需要求用户提供文件即可。除了上传输入,还有API。@donatJ这与与与本地文件系统交互不同。不能从JavaScript打开任意文件路径或检查目录。访问文件的唯一方法是用户将其提供给文件表单字段。