exports.main = async (event, context) => {
const querystring = require('querystring');
const {
encode,
decode
} = require('js-base64');
let body = decode(event.body); // 文件数据
// 边界字符串
let boundary = event.headers['content-type'].split('; ')[1].replace('boundary=', '');
let file = querystring.parse(body, '\r\n', ':');
let fileInfo = file['Content-Disposition'].split('; ');
let fileName = '';
let ext = '';
for (let value in fileInfo) {
if (fileInfo[value].indexOf("filename=") != -1) {
fileName = fileInfo[value].substring(10, fileInfo[value].length - 1);
if (fileName.indexOf('\\') != -1) {
fileName = fileName.substring(fileName.lastIndexOf('\\') + 1);
}
ext = fileName.substr(fileName.indexOf('.') + 1, fileName.length);
}
}
let upperBoundary = body.toString('ascii').indexOf(file['Content-Type'].substring(1)) + file['Content-Type'].substring(1).length;
let binaryDataAlmost = body.toString('ascii').substring(upperBoundary).replace(/^\s\s*/, '').replace(/\s\s*$/, '');
let binary = binaryDataAlmost.substring(0, binaryDataAlmost.indexOf(`--${boundary}--`));
let result = await uniCloud.uploadFile({
cloudPath: fileName,
fileContent: binary
});
return binary;
}
文件可以上传成功,但是图片大小不对 而且没法预览。text 可以预览 但是有乱码。 表格 文档 得修复才能预览。求助大神帮忙看看。没法使用node 关于上传文件的中间件,所以自己处理上传文件。
4 个回复
z***@outlook.com
我和你一样,现在还没头绪
DCloud_uniCloud_WYQ
https://ext.dcloud.net.cn/plugin?id=2282
4***@qq.com (作者)
万分感谢
2020-08-12 09:52
MonikaChen
听说阿里云云函数无法向云存储写数据,所以通过云函数应该无法上传文件吧
张宝江
我用el-upload 组件上传,不会弄了。能否指点一下。