node.js 获取post图片存储 但写入后图片损坏 是什么情况

程晓磊
  • 12

问题描述

看的官方文档 直接复制的官方文档代码 已成功写入图片 但是图片打开失败 显示损坏

问题出现的环境背景及自己尝试过哪些方法

var express = require('express');
var app = express();
var fs = require("fs");

var bodyParser = require('body-parser');
var multer = require('multer');

app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/' }).array('image'));

app.get('/index.htm', function (req, res) {
    res.sendFile(__dirname + "/" + "index.htm");
})

app.post('/file_upload', function (req, res) {

console.log(req.files[0]);  // 上传的文件信息

var des_file = __dirname + "/image" + req.files[0].originalname;
fs.readFile(req.files[0].path, function (err, data) {
    fs.writeFile(des_file, data, function (err) {
        if (err) {
            console.log(err);
        } else {
            response = {
                message: 'File uploaded successfully',
                filename: req.files[0].originalname
            };
        }
        console.log(response);
        res.end(JSON.stringify(response));
    });
    });
})

var server = app.listen(3000, function () {

    var host = server.address().address
    var port = server.address().port

    console.log("应用实例,访问地址为 http://%s:%s", host, port)

})

你期待的结果是什么?实际看到的错误信息又是什么?

希望大神能帮我解决一下 谢谢啦

clipboard.png

clipboard.png

回复
阅读 1.9k
2 个回答

不明白你的意图,通过 multer 上传的文件已经被存储在了 /tmp/ 目录下,你想要再复制一份到 __dirname/image ?为何不直接把 dest 指向 __dirname/image 。

宣传栏