最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Golang1.6:使用jQuery.iframe-Transport.js做Ajax文件上传并处理multipartForm_html/css

来源:动视网 责编:小采 时间:2020-11-27 16:39:45
文档

Golang1.6:使用jQuery.iframe-Transport.js做Ajax文件上传并处理multipartForm_html/css

Golang1.6:使用jQuery.iframe-Transport.js做Ajax文件上传并处理multipartForm_html/css_WEB-ITnose:本文测试环境Golang 1.6, jQuery 1.12.3 之前写过一篇文章: jQuery.iframe-Transport.js来发送Ajax文件上传请求对返回JSON的处理,就是讲使用这个jQuery插件时对返回JSON数据的处理,该插件会内置一个 这样就可以实现 ajax的 multipart/f
推荐度:
导读Golang1.6:使用jQuery.iframe-Transport.js做Ajax文件上传并处理multipartForm_html/css_WEB-ITnose:本文测试环境Golang 1.6, jQuery 1.12.3 之前写过一篇文章: jQuery.iframe-Transport.js来发送Ajax文件上传请求对返回JSON的处理,就是讲使用这个jQuery插件时对返回JSON数据的处理,该插件会内置一个 这样就可以实现 ajax的 multipart/f


本文测试环境Golang 1.6, jQuery 1.12.3

之前写过一篇文章: jQuery.iframe-Transport.js来发送Ajax文件上传请求对返回JSON的处理,就是讲使用这个jQuery插件时对返回JSON数据的处理,该插件会内置一个 这样就可以实现 ajax的 multipart/form-data实现,注意这样做主要是为了兼容低版本浏览器,如果不考虑IE < 10的话,可以直接使用XHR2,参考 这个链接.

所以代码还是和以前一样,如下(HTML):

JavaScript:

// avatarUpload是上面的type = “file”的input元素// 每当选择文件后立即发送Ajax请求$('#avatarUpload').change(function() { //'upload'是具体发送POST请求针对的服务器URL $.ajax('upload', { type: 'POST', files: $('#avatarUpload'), iframe: true, // 注意如果服务器返回结果是JSON,dataType要设置 dataType: 'json' }).done(function(data) { // 这里data是JavaScript对象 console.log('done()', data); }).fail(function() { console.log('fail()'); }).always(function() { console.log('always()'); });});

接下来在Golang中,处理这个

,首先调用 http.Request的 ParseMultipartForm方法来处理 multipart/form-data,参数是内存内的最大Buffer大小,如果没有错误的话,返回一个 multipart.Form对象,里面的 File属性会包含用户上传文件的信息,具体请参考 文档,这里我们通过 logMultipartForm函数简单把里面的数据坐下输出,如下代码:

// 
输出multipart.Form内的数据func logMultipartForm(form *multipart.Form) { log.Print("Values:", form.Value) log.Print("Files:") for key := range form.File { headers := form.File[key] for _, header := range headers { log.Printf("Key: %v, Filename: %v, Header: %v", key, header.Filename, header.Header) } }}// 处理POST请求的Handler// Handler的声明可能根据不同路由HTTP框架而不一样func fileUploadHandler(ctx context.Context, w http.ResponseWriter, r *http.Request) { err := r.ParseMultipartForm(1024 * 50) //50kb buffer if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } form := r.MultipartForm logMultipartForm(form) /* 后面省略 */}

示例输出:

Values: map[X-Requested-With:[IFrame] X-HTTP-Accept:[application/json, text/javascript, */*; q=0.01]]Files:Key: avatarUpload, Filename: IMG_1156.jpg, Header: map[Content-Disposition:[form-data; name="avatarUpload"; filename="IMG_1156.jpg"] Content-Type:[image/jpeg]]

文档

Golang1.6:使用jQuery.iframe-Transport.js做Ajax文件上传并处理multipartForm_html/css

Golang1.6:使用jQuery.iframe-Transport.js做Ajax文件上传并处理multipartForm_html/css_WEB-ITnose:本文测试环境Golang 1.6, jQuery 1.12.3 之前写过一篇文章: jQuery.iframe-Transport.js来发送Ajax文件上传请求对返回JSON的处理,就是讲使用这个jQuery插件时对返回JSON数据的处理,该插件会内置一个 这样就可以实现 ajax的 multipart/f
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top