1.view实现:
<form name="commentForm",method="post",enctype="multipart/form-data",action="/post/addComment">
<input type="file" name='img'>
<input type="submit" value="提交">
</form>
注意使用post提交,enctype值为multipart/form-data,
2.后端逻辑部分:
获取到data之后的逻辑
if(data.files){
let file=data.files.img;
//获取文件的后缀名
let ext =path.extname(file.name);
let filename=Date.now()+ext;
//创建可读流,读取路径
var readStream=fs.createReadStream(file.path);
//创建一个可以写入的流,写入到文件 './static/upload/'+filename 中
var writeStream=fs.createWriteStream('./static/upload/'+filename);
// 管道读写操作
// 读取文件内容,并将内容写入到文件中
readStream.pipe(writeStream);
//监听事件操作end
readStream.on('end',function(){
fs.unlinkSync(file.path);//删除文件路径
});
//将存入content中
data.fields.content +='<img src="/uploadFile/'+filename+'"/>'
data=data.fields;
}
3.读取本地文件,之后即可显示
exports.uploadFile = async function(ctx, next){
//取文件名
let filepath =ctx.request.path.replace(/^\/uploadFile\//,'');
//将文件地址指向本地
filepath = './static/upload/'+filepath;
//读出本地上传的文件给body
ctx.body = fs.readFileSync(filepath);
}