首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uppy.io用于发送base64编码的数据,而不是指定文件输入

uppy.io用于发送base64编码的数据,而不是指定文件输入
EN

Stack Overflow用户
提问于 2021-09-29 16:24:57
回答 1查看 143关注 0票数 0

有没有办法使用uppy.io发送base64编码的数据?我已经使用Dashboard组件将其用于“软拷贝”文档上传,但似乎不能想出一种方法,可以传递文件字节而不使用输入文件标签来提供要上传的数据。

上下文:我有一个使用JavaScript组件访问本地扫描器硬件的页面。它扫描,显示预览,一切正常。然后,用户点击upload按钮将其推送到服务器,扫描组件将扫描输出为base64编码的数据。我可以使用XMLHttpRequest将其发送到服务器,如下所示:

代码语言:javascript
复制
    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并准备接收它。

所有的例子都依赖于输入标签,所以我真的不知道该采取什么方法。谢谢你的指点。

EN

回答 1

Stack Overflow用户

发布于 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服务服务器端。

代码语言:javascript
复制
    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
            })
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69380181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档