请教一个关于 GO 的 HTTP 读取、发送问题

2020-03-05 10:18:56 +08:00
 wyds591101

我想从 get 远程图片,并 post 到指定的服务器上。 我通过 python 的代码可以实现,实现如下

import requests

s = requests.session()
r = s.get("https://www.v2ex.com/static/img/v2ex@2x.png")
print(r.content)

r1= s.post("http://localhost:8080/", files={
    'filename': (
        "123.png",
        r.content, 
        'image/png' #测试
    )
})
print(r1.status_code)

但是我用 go 的话,获取到 get 的 body 之后,一直 post 不上去,要不就是 io eof,要不就是提示 content-type,即使解决了 content-type 的问题,io eof 也过不了,求各位大神指导。 感谢、感谢、感谢!!!

2463 次点击
所在节点    Go 编程语言
15 条回复
lcj2class
2020-03-05 10:48:56 +08:00
where is your go code?
dracher
2020-03-05 10:53:51 +08:00
为什么贴了一段可以实现的 code, 但是有问题确不发上来.....
你这不是求大神...是在求大仙吧....
Yoock
2020-03-05 10:59:08 +08:00
SHOW ME YOUR CODE
wyds591101
2020-03-05 11:05:29 +08:00
@lcj2class 代码以上,截取了部分主要的代码,其他的写的乱七八糟的没贴。
@lcj2class
wyds591101
2020-03-05 11:05:38 +08:00
@dracher 代码以上,截取了部分主要的代码,其他的写的乱七八糟的没贴。
wyds591101
2020-03-05 11:06:11 +08:00
@Yoock 我的代码来了,跟上面两位一样,就截取了部分代码。
Yoock
2020-03-05 12:29:30 +08:00
Body 不能复用的,Copy 一下
wentaoliang
2020-03-05 12:50:27 +08:00
楼上+1,
lcj2class
2020-03-05 17:25:29 +08:00
body 倒是可以复用,把 ContentLength 设为 0,以 chunked 形式发送试试
lcj2class
2020-03-05 17:55:50 +08:00
https://gitee.com/liujiacai/codes/1jqe0f38lkupird7xmang78/widget
写的一个测试示例,楼主可以参考下
wyds591101
2020-03-05 19:38:30 +08:00
@lcj2class 我之前也是这么写的,我也按照示例写了,但是由于我的后端有可能跟您的不一样,所以我的报`request Content-Type isn't multipart/form-data`的错误,我在研究下,谢谢。
wyds591101
2020-03-05 19:38:51 +08:00
@Yoock 我使用 copy 下试试,感谢。
Yoock
2020-03-05 20:57:17 +08:00
我试了 10 楼的代码,是可以的。
你这个接口应该只支持 form 的方式上传文件,你可以要手动构造 form 请求。
https://golang.org/pkg/mime/multipart/
https://stackoverflow.com/questions/20205796/post-data-using-the-content-type-multipart-form-data
看一下 golang 的 multipart form 库
wyds591101
2020-03-06 09:00:14 +08:00
@Yoock 嗯嗯,10 楼的代码我也试了,可以的,我去手动构造下 form 试试,感谢。
wyds591101
2020-03-06 09:03:11 +08:00
@Yoock 因为我搜了好多构造 form 的都是通过 io 读取文件弄的,所以我一直没弄好,一直没拼对。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/649999

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX