第一种
try {
const svgoResult:any = await svgoUp(nbuf.toString());
if (svgoResult && svgoResult.data) {
const formData = new FormData();
// 1.先将字符串转换成Buffer
const fileContent = Buffer.from(svgoResult.data);
// 2.补上文件meta信息
formData.append('files', fileContent, {
filename,
contentType: 'text/xml',
knownLength: fileContent.byteLength
});
formData.append('compress', 'true');
formData.append('creator', 'f-iconfont');
formData.append('platform', 'f-iconfont');
formData.submit('http://**.com/upload', function(err, response, body) {
let str = ''
response.on('data', (chunk) => {
//console.log(`响应主体: ${chunk}`);
str += chunk;
});
/* 发送结束 增量发送pv数据 */
response.on('end', () => {
const body = JSON.parse(str);
if (body.statusCode === 0 && body.data[0] && body.data[0].url) {
res.send({
code: 0,
data: body.data[0],
msg: 'success'
})
} else {
res.send({
code: -1,
msg: '上传文件失败'
})
}
});
//发送失败 重
response.on('error', (e) => {
console.log('文件上传失败', e)
res.send({
code: -1,
msg: '上传文件失败'
})
})
});
// request.post({url:'http://**.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) {
// if (err) {
// return console.error('upload failed:', err);
// } else {
// console.log('Upload successful! Server responded with:', body);
// }
// });
} else {
console.log('文件去掉注释压缩操作失败');
res.send({
code: -1,
msg: '上传文件失败'
})
}
} catch(e) {
res.send({
code: -1,
msg: '上传文件失败'
})
}
第三种
try {
const svgoResult:any = await svgoUp(nbuf.toString());
if (svgoResult && svgoResult.data) {
const form = request.post('http://**.com/upload', {
timeout: 20000
}, (err, response) => {
if (err || !res) {
console.log(err);
} else {
const body = JSON.parse(response.body);
if (body.statusCode === 0 && body.data[0] && body.data[0].url) {
res.send({
code: 0,
data: body.data[0],
msg: 'success'
})
} else {
res.send({
code: -1,
msg: '上传文件失败'
})
}
}
}).form();
form.append('compress', 'true');
form.append('creator', 'f-iconfont');
form.append('platform', 'f-iconfont');
form.append('files', string2fileStream(svgoResult.data, { path: filename }));
第三种
存到本地再读出来
参考:https://github.com/ayqy/string-to-file-stream
https://www.cnblogs.com/ainyi/p/10242117.html
https://www.jb51.net/article/167903.htm