gpt4 book ai didi

javascript - 使用 Antd 上传操作将图像上传到 firebase 存储时出现问题

转载 作者:行者123 更新时间:2023-11-29 10:27:24 24 4
gpt4 key购买 nike

我正在使用 antd picture-wall/card使用此 reference code 将图像上传到我的 firebase 存储的示例我唯一要改变的地方是 action属性(property) <Upload>组件。

关于action属性,我正在使用一个函数将图像上传到 firebase 存储而不是链接都被接受,如文档中所示

我的 Action 函数是这样的;

export async function uploadImage(file) {
const storage = firebase.storage()
const metadata = {
contentType: 'image/jpeg'
}
const storageRef = await storage.ref()
const imageName = generateHashName() //a unique name for the image
const imgFile = storageRef.child(`Vince Wear/${imageName}.png`)
return imgFile.put(file, metadata)
}

问题来了, 图片成功上传到 firebase,但我不断收到 antd 响应处理错误,可能不确定是什么 action函数应该返回,尽管文档中写的是它应该返回一个 promise 。

错误信息:

XML Parsing Error: syntax error
Location: http://localhost:3000/[object%20Object]
Line Number 1, Column 1:

错误也会在上传的图片缩略图上显示为红色边框。

请求帮助,我的操作函数应该返回什么来消除错误。我可以解析我的 firebase 响应并将必要的详细信息返回给 antd 上传操作。

使用

    "antd": "^3.9.2",
"firebase": "^5.8.5",
"react": "^16.7.0",

最佳答案

您可以使用 customRequest 属性来解决这个问题。看看

class CustomUpload extends Component {
state = { loading: false, imageUrl: '' };

handleChange = (info) => {
if (info.file.status === 'uploading') {
this.setState({ loading: true });
return;
}
if (info.file.status === 'done') {
getBase64(info.file.originFileObj, imageUrl => this.setState({
imageUrl,
loading: false
}));
}
};

beforeUpload = (file) => {
const isImage = file.type.indexOf('image/') === 0;
if (!isImage) {
AntMessage.error('You can only upload image file!');
}

// You can remove this validation if you want
const isLt5M = file.size / 1024 / 1024 < 5;
if (!isLt5M) {
AntMessage.error('Image must smaller than 5MB!');
}
return isImage && isLt5M;
};

customUpload = ({ onError, onSuccess, file }) => {
const storage = firebase.storage();
const metadata = {
contentType: 'image/jpeg'
}
const storageRef = await storage.ref();
const imageName = generateHashName(); //a unique name for the image
const imgFile = storageRef.child(`Vince Wear/${imageName}.png`);
try {
const image = await imgFile.put(file, metadata);
onSuccess(null, image);
} catch(e) {
onError(e);
}
};

render () {
const { loading, imageUrl } = this.state;
const uploadButton = (
<div>
<Icon type={loading ? 'loading' : 'plus'} />
<div className="ant-upload-text">Upload</div>
</div>
);
return (
<div>
<Upload
name="avatar"
listType="picture-card"
className="avatar-uploader"
beforeUpload={this.beforeUpload}
onChange={this.handleChange}
customRequest={this.customUpload}
>
{imageUrl ? <img src={imageUrl} alt="avatar" /> : uploadButton}
</Upload>
</div>
);
}
}

关于javascript - 使用 Antd 上传操作将图像上传到 firebase 存储时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55472832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com