【发布时间】:2021-06-02 14:34:32
【问题描述】:
我正在使用一个反应组件作为我的 MarkDown 编辑器。该组件提供了一个拖放区来粘贴文件,它接受一个回调函数,该函数通过文件(主要是图像文件)的 ArrayBuffer 传递。后端需要一个图像文件,就像通过表单上传一样。但事实证明,返回 ArrayBuffer 而不是文件是一个问题。
我尝试将 ArrayBuffer 转换为 Blob,但后端需要上传文件中的其他信息,例如二进制图像文件中存在的文件名和大小。 我会很感激任何帮助!谢谢。
下面的例子:
function converArrayBufferToImage(ab) {
// Obtain a blob: URL for the image data.
return new Blob([ab])
}
export default function ReactMdEditor(props) {
const { value, setValue } = props;
const save = async function* (file) {
let fileData = new FormData()
let convertedFile = converArrayBufferToImage(file)
fileData.append('file', convertedFile);
try {
const response = yield uploadFile(fileData);
const data = response.data;
yield data.url;
return true;
} catch (error) {
console.log(error);
return false;
}
};
return (
<div>
<ReactMde
value={value}
onChange={setValue}
childProps={{
writeButton: {
tabIndex: -1
}
}}
paste={{
saveImage: save
}}
/>
</div>
);
}
编辑:如果需要上下文,我的后端是用 Python、Flask 构建的。
【问题讨论】:
标签: javascript reactjs binaryfiles react-md