go语言接收html上传的文件,html5原生js拖拽上传(golang版)

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);

}

}

`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值