【发布时间】:2022-10-26 02:32:00
【问题描述】:
我正在尝试使用 REST API 将 ova 文件上传到 vCenter 库。 为此(全部使用 Vcenter api 完成)
- 使用身份验证
- 获取数据存储
- 已创建库
- 已将项目添加到库
- 已创建更新会话
- 获取用于上传的端点
- 上传ova文件到vcenter
阶段 1 ~ 6 已成功完成,但最后阶段我无法将 ova 文件上传到 vCenter 库。 当我调用 api 时,它返回 200 响应代码,似乎上传成功完成。但是,事实上,我找不到任何在 vcenter 库中导入的 ova 文件,并且我可以看到错误“检测到解析头错误”
我的上传功能如下;
func UploadFile(client *http.Client, fileName, uploadEndpoint, sessionID string) (status bool, err error) { file, err := os.Open(fileName) if err != nil { return false, err } defer file.Close() body := &bytes.Buffer{} writer := multipart.NewWriter(body) part, err := writer.CreateFormFile("file", filepath.Base(fileName)) if err != nil { return false, err } _, err = io.Copy(part, file) err = writer.Close() if err != nil { return false, err } //uploadEndpoint ; https://ip252.ip-51-255-152.eu:443/cls/data/5a86158a-f818-4796-8bc1-e4d88a29dcd7/focal-server-cloudimg-amd64.ova req, err := http.NewRequest("POST", uploadEndpoint, body) req.Header.Set("Content-Type", writer.FormDataContentType()) req.Header.Set("vmware-api-session-id", sessionID) resp, err := client.Do(req) if err != nil { return false, err } defer resp.Body.Close() return true, nil }
【问题讨论】:
-
你有没有解决过这个问题?我现在正在尝试做同样的事情。