package main
import ("fmt"
"io"
"net/http"
"os")const(
upload_pathstring = "./upload/")//上传
func uploadHandle(w http.ResponseWriter, r *http.Request) {if r.Method == "GET"{
io.WriteString(w, tpl)
}else{//获取文件内容 要这样获取
file, head, err := r.FormFile("upfile")
fmt.Println(file)if err !=nil {
fmt.Println(err)return}
defer file.Close()//创建文件
fW, err := os.Create(upload_path +head.Filename)if err !=nil {
fmt.Println("文件创建失败")return}
defer fW.Close()
_, err=io.Copy(fW, file)if err !=nil {
fmt.Println("文件保存失败")return}
fmt.Println(w, head.Filename+"保存成功")//io.WriteString(w, head.Filename+" 保存成功")//http.Redirect(w, r, "/success", http.StatusFound)//io.WriteString(w, head.Filename)
}
}
func main() {
fmt.Println("OK!请访问 :8080/upload")//启动一个http 服务器
http.HandleFunc("/upload", uploadHandle)
err := http.ListenAndServe(":8080", nil)if err !=nil {
fmt.Println("服务器启动失败")return}
}var tpl = `
drag fileuuz.οndragenter=function(e){
e.preventDefault();
}
uuz.οndragοver=function(e){
e.preventDefault();this.innerHTML = '请松开';
}
uuz.οndragleave=function(e){
e.preventDefault();this.innerHTML = '请拖入要上传的文件';
}
uuz.οndrοp=function(e){
e.preventDefault();var upfile = e.dataTransfer.files[0]; //获取要上传的文件对象(可以上传多个)
alert(upfile.name)
alert(upfile.type)var formdata = newFormData();var xhr = newXMLHttpRequest();
formdata.append('upfile', upfile); //设置服务器端接收的name为upfile
xhr.open("post","upload");
xhr.onreadystatechange=function(){if(this.readyState==4){if(this.status==200){ //上传成功
var resultText = this.responseText;
console.info(resultText);//转json
var jsonObj =JSON.parse(resultText);
console.info(jsonObj);if(jsonObj.success){//生成input表单
var fileId =createInput(jsonObj.uuid);//生成显示名称
appendFile1(fileId,upfile.name);
}
}else{
alert('上传失败,请使用另一种方式上传');
}
}
}
xhr.send(formdata);
}
}
`