用ant 的upload组件上传图片,代码如下:
<Upload
name="itembank-image"
action="http://localhost:8080/api/upload"
listType="picture-card"
fileList={fileList}
beforeUpload={this.beforeUpload}
headers={
{Authorization: 'Bearer ' + localStorage.jwtToken }
}
onPreview={this.handlePreview}
onChange={this.handleUploadChange}
>
{fileList.length > 1 ? null : uploadButton}
</Upload>
handleUploadChange = (info) => {
let { file,fileList } = info ;
console.log(file);
fileList = fileList.map((file) => {
if (file.response) {
// Component will show file.url as link
file.url = file.response.url;
}
return file;
});
this.setState({fileList});
}
服务端是golang代码:
func UploadImage(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
r.ParseMultipartForm(32 << 20)
file, handler, err := r.FormFile("item-image")
if err != nil {
return
}
defer file.Close()
filename := renameFile(handler.Filename) //在server side重新命名防止重复
fullfilename := "/upload/img/"+filename
targetPath := "."
f, err := os.OpenFile(targetPath+fullfilename, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
return
}
defer f.Close()
io.Copy(f, file)
response := &FileInfoResponse{UID: 1, Name: filename, Status: "done", Url: fullfilename,Response:"test"}
b, err := json.Marshal(response)
w.Write(b)
}
服务端看到图片上传成功,返回一个新的文件地址给客户端。然后在客户端,我看到的是这样的数据:
response是一个字符串啊,这样根本无法使用 file.response.url 这样的语法来读取数据啊,请问是我哪里搞错了吗?