【问题标题】:Moodle corrupted uploaded filesMoodle 损坏的上传文件
【发布时间】:2021-12-04 16:37:08
【问题描述】:

我正在使用moodle api core_files_upload 和node js 使用这个脚本

const { CallService } = require("../MoodleWS")

var Upload = async function(userid, file) {
    var base64 = await toBase64(file)
        .then(r => {
            return r;
        })
        .catch((e) => {
            console.log(e)
        });
    console.log(base64);
    var param = {
        itemid: 0,
        instanceid: userid,
        filearea: 'draft',
        filecontent: base64,
        component: 'user',
        filepath: '/',
        filename: file.name,
        contextlevel: 'user'
    }
    // return promise calling web service, basically returned axios
    return CallService('POST', 'core_files_upload', false, null, param);
}

const toBase64 = file => new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => resolve(reader.result);
    reader.onerror = () => reject(reader.error);
})

module.exports = { Upload }

函数返回成功并上传文件,我检查了上传的文件大小与原始文件相同,不幸的是我无法打开文件并一直说如下图所示

而且图片也无法显示

上传的 base64 也有类似 data:application/pdf;base64,JVBERi0xLjQNJeL... 的 mime/type 标头,我真的不知道出了什么问题。当我尝试使用moodle的本机网络版本上传文件时,文件正确上传。所以有人可以帮忙吗?谢谢

【问题讨论】:

    标签: javascript node.js moodle moodle-api moodle-mobile


    【解决方案1】:

    结果证明我不需要包含来自 base64 的 mime/type。所以我只是删除了data:application/pdf;base64 并稍微修改了我的参数,所以它变得像

    var base64 = await toBase64(file)
            .then(r => {
                return r;
            })
            .catch((e) => {
                console.log(e)
            });
        var param = {
            itemid: 0,
            instanceid: userid,
            filearea: 'draft',
            filecontent: base64.split(',')[1],
            component: 'user',
            filepath: '/',
            filename: file.name,
            contextlevel: 'user'
        }
    
    

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2013-10-24
      • 1970-01-01
      相关资源
      最近更新 更多