如何解决Moodle 损坏上传的文件
我正在使用这个脚本的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的原生网络版本上传文件时,文件上传正确。所以有人可以帮忙吗?谢谢
解决方法
所以结果证明我不需要包含 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'
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。