分享
  1. 首页
  2. 主题
  3. Go问与答

郁闷了一下午了,传个参怎么遇到这么古怪的事情了!!!(已经解决)

bsdx866 · · 2158 次点击 · 开始浏览 置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

哪位大神帮忙给看看,郁闷了一下午了太气人了! ``` func Upload(w http.ResponseWriter, r *http.Request) { r.ParseMultipartForm(1024) _, _, err := r.FormFile("upload") if err != nil { w.Write([]byte("文件上传错误")) return } for _, fileHead := range r.MultipartForm.File["upload"] { file, err := fileHead.Open() if err != nil { log.Println("没有接收到文件", err) return } defer file.Close() buf := make([]byte, 512) file.Read(buf) objContentType := http.DetectContentType(buf) //用这个就报错 // objContentType := "application/pdf" 用这个就没问题 miniolib.UploadObj(fileHead.Filename, file, fileHead.Size, objContentType) } } ``` 下面这个是UploadObj的写法 ``` func UploadObj(objectName string, fp io.Reader, size int64, opt string) { object, err := client.PutObject(context.Background(), bucketName, objectName, fp, size, minio.PutObjectOptions{ContentType: opt}) if err != nil { log.Println("上传失败:", err) return } log.Printf("文件上传成功 %s of 文件大小为: %d\n", objectName, object.Size) } ``` 原因是因为file.Read读取了512个字节作为判断contentType的类型,再上传数据的时候file的完整性就没有了,所以会提示错误。 正确的写法是下面的: ``` func Upload(w http.ResponseWriter, r *http.Request) { err := r.ParseMultipartForm(1024) if err != nil { w.Write([]byte("没有上传文件,请重试")) return } for _, fileHead := range r.MultipartForm.File["upload"] { file, err := fileHead.Open() if err != nil { log.Println(err) return } defer file.Close() objContentType := fileHead.Header["Content-Type"] miniolib.UploadObj(fileHead.Filename, file, fileHead.Size, objContentType[0]) } } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2158 次点击 ∙ 1 赞
1 回复 | 直到 2023年09月05日 14:37:47
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)