Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不使用express.js将图像保存到node.js服务器_Javascript_Html_Node.js_Upload_Save - Fatal编程技术网

Javascript 不使用express.js将图像保存到node.js服务器

Javascript 不使用express.js将图像保存到node.js服务器,javascript,html,node.js,upload,save,Javascript,Html,Node.js,Upload,Save,因此,我一直想知道如何在不使用express的情况下将图像保存到node.js服务器上(只是学习node,希望自己能够更好地学习node,而不使用express) 到目前为止,我有一个表单,其中图像是我发送post请求时唯一的输入。这是到目前为止我在服务器上所做的,它没有记录任何东西 if(req.method === 'POST') { if (req.url === '/upload') { req.on('error', function(e) {

因此,我一直想知道如何在不使用express的情况下将图像保存到node.js服务器上(只是学习node,希望自己能够更好地学习node,而不使用express)

到目前为止,我有一个表单,其中图像是我发送post请求时唯一的输入。这是到目前为止我在服务器上所做的,它没有记录任何东西

if(req.method === 'POST') {

    if (req.url === '/upload') {

        req.on('error', function(e) {
          console.log('Problem with request: ' + e.message);
        });

        res.writeHead(200, {'Content-Type': 'image/jpg; charset=utf8'});

        req.on('data', function (chunk) {

            fs.writeFile(__dirname + "/uploads/dada.jpg", chunk, function(err) {
                if(err) {
                    console.log(err);
                } else {
                    console.log("The file was saved!");
                }
            }); 
        });
    }
}
这是我的表格:

<form method="post" action="/upload" enctype="multipart/form-data">

编辑:我修复了大部分问题,但该文件仅保存为图像,不能像图像一样查看。(我猜内容类型有问题,但不知道如何修复)
是我整个应用程序的一部分。我知道我需要将其分为不同的模块,但我稍后会这样做

我完全忘记了这个老问题,但现在我看到它有很多视图,下面是我找到的解决方案:

var port = 1357;

var http = require('http'),
    path = require('path'),
    mime = require('mime'),
    fs = require('fs'),
    GUID = require('GUID'),
    formidable = require('formidable'),
    util = require('util');

var app = http.createServer(function (req, res) {

    if (req.method === 'POST') {

        if (req.url === '/upload') {

            req.on('error', function (e) {
                console.log('Problem with request: ' + e.message);
            });

            var fileDirectory = __dirname + '/db/',
                form = new formidable.IncomingForm();

            form.keepExtensions = true;
            form.uploadDir =fileDirectory;

            form.parse(req, function (err, fields, files) {

                if (err) throw (err);

                var pic = JSON.stringify(util.inspect(files)),
                    upIndx = pic.indexOf('db'),
                    path = pic.slice(upIndx + 6, upIndx + 42);

                res.writeHead(200, {
                    'Content-Type': 'text/html'
                });
                fs.readFile('views/index.html', function (err, page) {
                    res.writeHead(200, {
                        'Content-Type': 'text/html'
                    });
                    res.write(page);
                    res.write('<div>Download Link: </div><div>' + fileDirectory + path + '</div>');
                    res.end();
                });
            });

        }
    } else {

        //not important for question, handle other request
    }

});

app.listen(port);
console.log('Server running on port: ' + port)
var端口=1357;
var http=require('http'),
path=require('path'),
mime=require('mime'),
fs=需要('fs'),
GUID=require('GUID'),
强大=需要(“强大”),
util=require('util');
var app=http.createServer(函数(req,res){
如果(请求方法=='POST'){
如果(req.url=='/upload'){
请求开启('错误',功能(e){
log('请求问题:'+e.message);
});
var fileDirectory=uu dirname+'/db/',
form=新的。IncomingForm();
form.keepExtensions=true;
form.uploadDir=fileDirectory;
解析(请求、函数(错误、字段、文件){
如果(错误)抛出(错误);
var pic=JSON.stringify(util.inspect(files)),
upIndx=pic.indexOf('db'),
路径=图片切片(upIndx+6,upIndx+42);
文书标题(200{
“内容类型”:“文本/html”
});
fs.readFile('views/index.html',函数(err,page){
文书标题(200{
“内容类型”:“文本/html”
});
res.write(第页);
res.write('下载链接:'+fileDirectory+path+'');
res.end();
});
});
}
}否则{
//问题不重要,处理其他请求
}
});
app.listen(端口);
console.log('在端口上运行的服务器:'+端口)

您正在尝试上载吗?在这种情况下,不确定为什么要监听
res
response对象。您应该监听('data')上的
req.on并保存最终的有效负载。我可能也只会回复200,不需要包含内容类型。你没有从服务器返回图像。我的头一定撞得很厉害。。。谢谢你的帮助,我会修正我的错误,看看我的代码现在会发生什么。它确实保存图像和所有内容,但无法查看图像。我一定是做错了什么。是否缺少某些内容类型或其他内容?您需要将每个块追加到输出文件中(看起来您正在用下一个块覆盖每个块)。另外,如果你只是通过编辑你的问题来更新代码,会更容易。谢谢,但是我该怎么做呢。我是一个完全的初学者。。。