HandleFunc传入的第二个参数是一个函数,Handle传入的是一个实现了Handler接口的结构体。内部实现的时候,这个传入的参数当然会被统一成一个接口,但是函数不是接口,所以需要做内部的转型,给函数绑定一个方法,然后调用函数自己(这个算是go比较巧妙的用法)。其实HandleFunc内部的实现很简单,最后也是调用Handle。
xmind
看一下服务器是不是没有启
?目前没有啊
老师的讲解你好好整理一下就出来了
空指针异常,你要看报错的堆栈信息。
源码:https://github.com/willierGo/simpleVlog/blob/master/src/vlog/main.go
赶紧拉
确认下逗号是不是英文的,看报错应该是编辑器没有识别逗号
我们熟悉的前端上传文件一般是两个按钮,一个点击弹出文件对话框选择文件,另外一个点击是上传文件。在本次课程中我们只使用了一个按钮用来上传,那么选择文件怎么做的呢?
<a onclick="selectFile()" class="button button-big button-fill">上传</a></div>
是监听按钮的动作,当点击时是触发selectFile函数。当使用selectFile选择完文件后,input标签的内容变为选中状态,而onchange 监听到变化后会调用uploadFile函数。
可以参考源码: https://github.com/willierGo/simpleVlog/blob/master/src/vlog/main.html
这个错误是链接被重置,出现这种情况有很多种,一般是服务器的问题,类似于上传文件过大等等~
排查这个问题可以按照以下步骤:
获取http code 查看是否为链接被重置,还是因为dns服务或者防火墙等原因
查看access日志,看请求是否到达服务端
排查服务端错误的具体原因
如果域名没有问题的话 你的问题大概率可能会是:参数问题、上传文件过大、格式有问题
源代码上传到了git上,欢迎随时查看
https://github.com/willierGo/simpleVlog
跨域了,不过你是本地请求一般不会出现。。。有可能你电脑上访问html页面 使用的localhost,host文件里面没有localhost的dns配置?
在Handler函数内第一行添加w.Header().Set("Access-Control-Allow-Origin", "*"),设置请求的域名可以为任意域名。
接口获取到的文件其实放在了内存中,代码中的io.Copy是指把内存中的文件流式写入到硬盘文件中。这个过程只是写入。你所说的直接将file存到硬盘,也是同样的方法。
go语言基础会让你事半功倍。
应该会有
这是由于跨域请求的原因,访问的html页面和后端服务不在同一个域名下。
可以通过在服务端handler函数里面的第一句添加:
w.Header().Set("Access-Control-Allow-Origin", "*")
什么问题
应该可以
video文件夹需要在你代码的执行路径下,你先确认下这个?