今天有个需求,就是:
获取一个txt文件里面的url→得到图片→上传到服务器保存→服务器会返回一个url→保存url
首先我的思路是这样的:
数据库建表→先导入txt文件里面的url到一个字段→查表取这个字段get图片→把图片保存到本地→上传到服务器得到新url→存库
库:
获取txt文件每一行的数据:
func GetFileContentAsStringLines(filePath string) ([]string, error) {
logger.Infof("get file content as lines: %v", filePath)
result := []string{}
b, err := ioutil.ReadFile(filePath)
if err != nil {
logger.Errorf("read file: %v error: %v", filePath, err)
return result, err
}
s := string(b)
for _, lineStr := range strings.Split(s, "\n") {
lineStr = strings.TrimSpace(lineStr)
if lineStr == "" {
continue
}
result = append(result, lineStr)
}
logger.Infof("get file content as lines: %v, size: %v", filePath, len(result))
return result, nil
}
根据每行的url下载图片再上传服务器获取新url:
func FileDownAndUp(v,filePath string) string{
fileName := path.Base(v)
res, err := http.Get(v)
if err != nil {
fmt.Println("获取url失败")
panic(err)
}
bs,_:=ioutil.ReadAll(res.Body)
defer res.Body.Close()
ioutil.WriteFile(filePath+fileName,bs,0655)
f,err:=os.Open(filePath+fileName)
if err!=nil{
fmt.Println("文件异常")
panic(err)
}
defer f.Close()
reqResp,err:=req.Post("https://up.eai9.com",req.FileUpload{
FieldName:"uploadfile",
FileName:fileName,
File:f,
})
if err!=nil {
fmt.Println("上传服务器失败")
}
println(reqResp.String())
m := map[string]string{}
json.Unmarshal(reqResp.Bytes(), &m)
return m["data"]
}