Moodle 损坏的上传文件
Moodle corrupted uploaded files
我正在使用 moodle api core_files_upload
和节点 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 也有 mime/type header 之类的 data:application/pdf;base64,JVBERi0xLjQNJeL...
我真的不知道哪里出了问题。当我尝试使用 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'
}
我正在使用 moodle api core_files_upload
和节点 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 也有 mime/type header 之类的 data:application/pdf;base64,JVBERi0xLjQNJeL...
我真的不知道哪里出了问题。当我尝试使用 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'
}