Python
try:
file_obj = open("C:/temp/1.txt", "rb")
file_arg = {'file': ("1.txt", file_obj, {'path': 'test'})}
try:
response = requests.post(url, headers=header, files=file_arg)
except Exception as e:
print("传输文件失败:", e)
finally:
file_obj.close()
except Exception as e:
print("打开文件失败:", e)
Go
func (a *App) PostFile(c *gin.Context) {
var (
path string
err error
)
file, err := c.FormFile("file")
if err != nil {
app.NewResponse(c).ToErrorResponse(code.InvalidParams)
return
}
path = file.Header.Get(code.ContentType)
if path == "" {
app.NewResponse(c).ToErrorResponse(code.InvalidParams)
return
}
postFilePathObj := PostFile{}
//修改传过来参数的'为", 然后转换为json, 拿到客户端想上传的目录
if err = json.Unmarshal([]byte(strings.ReplaceAll(path, "'", `"`)), &postFilePathObj); err != nil {
app.NewResponse(c).ToErrorResponse(code.InvalidParams)
return
}
//开始判断路径是否存在
fullPath := filepath.Join(global.RootPath, postFilePathObj.Path)
pathInfo, err := os.Stat(fullPath)
if err != nil {
app.NewResponse(c).ToErrorResponse(code.NotFound)
return
}
//是否为目录
if !pathInfo.IsDir() {
app.NewResponse(c).ToErrorResponse(code.InvalidParams)
return
}
//验证通过
fullPath = filepath.Join(fullPath, file.Filename)
//保存文件
global.Logger.Info(logContent)
if err = c.SaveUploadedFile(file, fullPath); err != nil {
global.Logger.Errorf(saveFileLog, fullPath, err)
app.NewResponse(c).ToErrorResponse(code.ServerError)
return
}
app.NewResponse(c).ToResponse(code.Success)
}
发表回复