VptPassiveAdapter/api/oss_upload.go
2025-02-07 22:58:01 +08:00

52 lines
1004 B
Go

package api
import (
"ZhenTuLocalPassiveAdapter/dto"
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func UploadTaskFile(task dto.Task, file dto.FileObject) error {
url, err := QueryUploadUrlForTask(task.TaskID)
if err != nil {
return err
}
if err := OssUpload(url, file.URL); err != nil {
return err
}
return nil
}
func OssUpload(url, filePath string) error {
// 使用 http put 请求上传文件
file, err := os.Open(filePath)
defer os.Remove(filePath)
defer file.Close()
if err != nil {
return err
}
fileBytes, err := io.ReadAll(file)
if err != nil {
return err
}
req, err := http.NewRequest("PUT", url, bytes.NewBuffer(fileBytes))
if err != nil {
return err
}
req.Header.Set("Content-Length", fmt.Sprintf("%d", len(fileBytes)))
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("upload failed with status code %d", resp.StatusCode)
}
return nil
}