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 file

uuz.ο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);

}

}

`