我没有尝试使用React-dropzone将文件发布到Go后端但是遇到了问题。
这是我的反应代码:
const request = require('superagent');
<Dropzone name="file" onDrop={this.onDrop} multiple={false} />
onDrop = (acceptedFiles) => {
const req = request.post('/uploadTorrent');
acceptedFiles.forEach(file => {
req.attach(file.name, file);
});
req.end();
}
这是JS方面的错误:
XHR failed loading: POST "http://192.168.1.141:8000/uploadTorrent"
POST http://192.168.1.141:8000/uploadTorrent net::ERR_EMPTY_RESPONSE
如果我控制JS.j上的文件变量我得到了这个:
File(61718) {preview: "blob:http://192.168.1.141:8000/a3e9ed9f-6f6c-4471-8322-3591e9e138c7", name: "ubuntu-17.04-desktop-amd64.iso (1).torrent", lastModified: 1506018302216, lastModifiedDate: Thu Sep 21 2017 14:25:02 GMT-0400 (Eastern Daylight Time), webkitRelativePath: "", …}
不确定它是否应该如何。
我可以CURL服务器,它完全按预期工作:
curl http://192.168.1.141:8000/uploadTorrent -F "file=@ubuntu.torrent;filename=ubuntu.torrent"
以下是Go方面的代码:
http.HandleFunc("/uploadTorrent", func(w http.ResponseWriter, r *http.Request) { //grabbing the uploaded Torrent File and adding it to the client
file, header, err := r.FormFile("file")
fmt.Println(reflect.TypeOf(file))
fmt.Println("File: ", file)
if err != nil {
fmt.Println("Error with fetching file or request issue", file)
}
当我尝试从JS上传时,它总是为文件变量提取NIL值。
<nil>
File: <nil>
Error with fetching file or request issue <nil>
2017/11/20 23:54:10 http: panic serving 192.168.1.141:64806: runtime error:
invalid memory address or nil pointer dereference
任何人都知道造成这种情况的原因是什么?
更新
我从头开始使用这个元素:
<form encType="multipart/form-data" method="post" action="/uploadTorrent">
<input name="fileTest" type="file" /><p />
<input type="submit" value="submit" />
</form>
(我编辑了后端以寻找“fileTest”)。这非常有效。我被迫做一个301重定向回到主页,这让我很烦,因为这不是反应方式,但我是新手,所以我会接受这个作为我满意的解决方法。