使用goLang实现网络代理访问外网下载图片

package main

import (
"fmt"
"io"
"net/http"
"net/url"
"os"
)

func main() {
imageUrl := "https://drive.usercontent.google.com/download" //要下载的地址
proxyStr := "http://127.0.0.1:10809" //替换成自己vpn的地址和端口号,可f12查看Remote Address
proxyURL, err := url.Parse(proxyStr)
if err != nil {
fmt.Println("解析代理地址失败...")
return
}
transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL),
}

client := &http.Client{
Transport: transport,
}

request, errUrl := http.NewRequest("get", imageUrl, nil)
if errUrl != nil {
// 处理错误
fmt.Println("解析代理地址失败...")
return
}

responseUrl, errResponse := client.Do(request)
if errResponse != nil {
// 处理错误
fmt.Println("请求图片服务器获取效果图失败", errResponse)
return
}

defer responseUrl.Body.Close()
imagePath := "test.png" //图片的保存路径
fileImage, errImage := os.Create(imagePath)
if errImage != nil {
fmt.Println("无法创建文件:", errImage)
return
}
defer fileImage.Close()

// 将图片的内容复制到文件中
_, err = io.Copy(fileImage, responseUrl.Body)
if err != nil {
fmt.Println("无法保存图片:", err)
return
}
fmt.Println("图片下载成功")
}

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的示例代码,它使用 Go 编程语言实现网络下载图片并将其上传到 AWS S3 存储桶中,然后从存储桶中访问图片。在运行此代码之前,请确保您已经安装了 AWS SDK for Go 和 Go 的其他依赖项。 ```go package main import ( "fmt" "io/ioutil" "net/http" "os" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) func main() { // 下载图片 resp, err := http.Get("https://example.com/image.jpg") if err != nil { fmt.Println("Error downloading image:", err) return } defer resp.Body.Close() // 读取图片数据 data, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println("Error reading image data:", err) return } // 创建 AWS S3 会话 sess, err := session.NewSession(&aws.Config{ Region: aws.String("us-west-2"), // 替换为您的实际区域 }) if err != nil { fmt.Println("Error creating AWS session:", err) return } // 将图片上传到 S3 存储桶 svc := s3.New(sess) _, err = svc.PutObject(&s3.PutObjectInput{ Bucket: aws.String("my-bucket"), // 替换为您的实际存储桶名称 Key: aws.String("image.jpg"), // 替换为您想要为图片设置的键名称 Body: bytes.NewReader(data), }) if err != nil { fmt.Println("Error uploading image to S3:", err) return } // 从 S3 中访问图片 url := fmt.Sprintf("https://s3-%s.amazonaws.com/%s/%s", *sess.Config.Region, "my-bucket", "image.jpg") // 替换为您的实际存储桶名称 fmt.Println("Image URL:", url) } ``` 请注意,此示例代码假设您已经正确配置了 AWS SDK for Go 和您的 AWS 凭证。如果您还没有配置这些内容,请参考 AWS SDK for Go 文档中的说明进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值