在我的应用程序中,我从AmazonS3:
public async downloadFile(file: string): Promise<DownloadedFileType> {
const data = await this.#s3.send(
new GetObjectCommand({
Bucket: process.env.AWS_BUCKET_NAME,
Key: file,
}),
);
return { stream: data.Body, name: file };
}
private getBase64FromStream(
stream: Readable,
fileType: string,
): Promise<string> {
return new Promise((resolve, reject) => {
const data: Uint8Array[] = [];
function onData(chunk: Uint8Array): void {
data.push(chunk);
}
stream.on('data', onData);
stream.once('end', () => {
const result = Buffer.concat(data).toString('base64');
const mimeType =
fileType === 'pdf' ? 'application/pdf' : `image/${fileType}`;
resolve(`data:${mimeType}; base64, ${result}`);
stream.off('data', onData);
});
stream.once('error', reject);
});
}
export function PreviewComponent({
src,
}: IProps): JSX.Element {
const classes = useStyles();
const { dispatch } = useContext(AppContext);
const onImageClick = () => {
dispatch(openImageModalAction(src));
};
const onError = (e: unknown) => {
console.log(e);
};
return (
<img
className={classes.imageWrapper}
src={src}
alt="preview"
onClick={onImageClick}
onError={onError}
/>
);
}
错误为React的SyntheticBaseEvent:
type: "error"
_reactName: "onError"
我不知道我做错了什么。我知道你可以把pdf文件转换成Base64。任何帮助都将不胜感激。
您正在使用标记来显示您的PDF,但碰巧PDF不是图像,因此img标记将不支持它。
MDN确认PDF不在img标记的支持格式列表中:
https://developer.mozilla.org/en-us/docs/web/html/element/img
请参阅react的示例:
https://stackblitz.com/edit/react-ts-pgvu9y?file=index.tsx
class App extends Component<AppProps, AppState> {
constructor(props) {
super(props);
this.state = {
name: 'React'
};
}
render() {
return (
<div>
Displaying a PDF file with React<br/>
embed tag works<br/>
<embed src="https://www.inkwelleditorial.com/pdfSample.pdf" width="800px" height="400px" />
img tag does not work<br/>
<img src="https://www.inkwelleditorial.com/pdfSample.pdf" width="800px" height="400px" />
</div>
);
}
}
问题内容: 我正在尝试将base64图像字符串转换为图像文件。 使用以下代码将其转换为图像文件: 但是我遇到了错误,这是怎么了? 问题答案: 问题是编码内容中包含该内容。当base64函数对其进行解码时,这将导致无效的图像数据。像这样在解码字符串之前先删除函数中的数据。
问题内容: 我需要将base64编码字符串转换为ArrayBuffer。base64字符串是用户输入的字符串,它们将通过电子邮件进行复制和粘贴,因此在加载页面时它们不存在。我想在javascript中做到这一点,如果可能的话,不向服务器进行ajax调用。 这看起来不错,但我不知道如何使用代码。 有没有简单的方法(也许是本地方法)进行转换?谢谢 问题答案: 尝试这个:
问题内容: 我将 图片获取 为base64字符串( ) ,下面是将转换为图片的函数, 现在,如果图像为png,则png库将创建图像,而jpg库将引发错误,反之亦然。 问题是当我上传png时效果很好,但是当我 上传jpg文件时 返回此错误 无效的JPEG格式:缺少SOI标记 输入为: 这可能有帮助 问题答案: 您将您的传递给,这开始消耗阅读器,只是发现输入不是有效的PNG,因此返回错误。 然后,将部
有一种方法可以将输入流转换为字符串,并将其编码为base64,对吗? 在我的函数中,我得到了InputStream参数,需要将其插入到Oracle数据库表的BLOB字段中。 有办法做到吗? (我的数据库对象包含用于保存图像的字符串字段,但我找不到任何方法将InputStream转换为base 64格式的字符串。)
Im能够将转换为base64。但现在我正在尝试将其转换回并存储在中 编辑%1;首先感谢大家,我已经尝试了以下所有的解决方案,它们都起作用了。但是我有多个图像,如果中没有图像怎么办?
我需要将base64编码字符串转换为ArrayBuffer。base64字符串是用户输入,它们将从电子邮件中复制和粘贴,因此当页面加载时它们不在那里。如果可能的话,我希望在javascript中完成此操作,而不需要对服务器进行ajax调用。 我发现这些链接很有趣,但它们对我没有帮助: