開發日記之把url的檔案上傳至伺服器

KO_NO_JOJO發表於2020-12-04

今天有個需求,就是:

獲取一個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"]
}

相關文章