有没有办法使用uppy.io发送base64编码的数据?我已经使用Dashboard组件将其用于“软拷贝”文档上传,但似乎不能想出一种方法,可以传递文件字节而不使用输入文件标签来提供要上传的数据。
上下文:我有一个使用JavaScript组件访问本地扫描器硬件的页面。它扫描,显示预览,一切正常。然后,用户点击upload按钮将其推送到服务器,扫描组件将扫描输出为base64编码的数据。我可以使用XMLHttpRequest将其发送到服务器,如下所示:
var req = new XMLHttpRequest();
var formData = new FormData();
formData.append('fileName', uploadFileName);
formData.append('imageFileAsBase64String', imageFileAsBase64String);
req.open("POST", uploadFormUrl);
req.onreadystatechange = __uploadImages_readyStateChanged;
req.send(formData);但我真的很喜欢使用uppy,因为扫描文件可以相当大,我得到了可恢复的上传,漂亮的进度条等,并且我已经在后台设置了tusdotnet并准备接收它。
所有的例子都依赖于输入标签,所以我真的不知道该采取什么方法。谢谢你的指点。
发布于 2021-09-29 20:49:24
我最终弄明白了这一点。在这里,以防它对任何人有用。您可以使用fetch来转换base64字符串,然后将其转换为blob,最后通过addFile接口将其添加到uppy文件中。
参考了这篇文章:https://ionicframework.com/blog/converting-a-base64-string-to-a-blob-in-javascript/
下面的代码与我的设置一起工作,tusdotnet处理tus服务服务器端。
var uppy = new Uppy.Core({
autoProceed: true,
debug: true
})
.use(Uppy.Tus, { endpoint: 'https://localhost:44302/files/' })
.use(Uppy.ProgressBar, {
target: '.UppyInput-Progress',
hideAfterFinish: false,
})
uppy.on('upload', (data) => {
uppy.setMeta({ md:'value' })
})
uppy.on('complete', (result) => {
// do completion stuff
})
fetch(`data:image/jpeg;base64,${imageFileAsBase64String}`)
.then((response) => response.blob())
.then((blob) => {
uppy.addFile({
name: 'image.jpg',
type: 'image/jpeg',
data: blob
})
});https://stackoverflow.com/questions/69380181
复制相似问题