Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Angularjs 将图像从ionic上传到express.js multer_Angularjs_Node.js_Express_Ionic Framework_Multer - Fatal编程技术网

Angularjs 将图像从ionic上传到express.js multer

Angularjs 将图像从ionic上传到express.js multer,angularjs,node.js,express,ionic-framework,multer,Angularjs,Node.js,Express,Ionic Framework,Multer,我已经用很多方法尝试过了,但我的ionic framework上传图片的代码还是不走运(你可以简单地复制粘贴它,然后在android上运行) 我从库中获取图像并获取url没有问题。 下面的代码是我使用multer完成工作的服务器端代码 var express = require('express'); var http = require('http'); var multer = require('multer'); var bodyParser = require('body-parser'

我已经用很多方法尝试过了,但我的ionic framework上传图片的代码还是不走运(你可以简单地复制粘贴它,然后在android上运行)

我从库中获取图像并获取url没有问题。 下面的代码是我使用multer完成工作的服务器端代码

var express = require('express');
var http = require('http');
var multer = require('multer');
var bodyParser = require('body-parser');
var multerS3 = require('multer-s3');
var aws = require('aws-sdk');
var app = express();



app.use(bodyParser.json({
limit: '50mb'
 }));
 app.use(bodyParser.urlencoded({
limit: '50mb',
  extended: true
 }));

app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});


var storage = multer.diskStorage({

destination: function (req, file, callback) {
callback(null, './uploads');
console.log('hit storage');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
console.log('hit storage');
 }
});

var upload = multer({
storage: storage
}).single('userPhoto');


app.post('/upload2', function (req, res) {
console.log('hit post');
upload(req, res, function (err) {
if (err) {
    console.log(err);
    //console.log(req);
    return res.end("Error uploading file.");
} else {
    console.log('done');
    res.end("File is uploaded");
}

});
});
您只需在server.js和test中复制并粘贴上述代码即可

我得到的错误是

{ [Error: Unexpected field]
code: 'LIMIT_UNEXPECTED_FILE',
field: 'file',
storageErrors: [] }
仅供参考:我使用chrome inspect设备功能在android中运行本地主机。 (chrome://inspect/#devices)

另一件事,为什么我得到这样的图像url

"content://com.android.providers.media.documents/document/image%3A42"

甲酸盐缺失,这有什么意义吗

我的爱奥尼亚信息

您的系统信息:


请尝试以下方法上载图像:

  var fs = require('fs');
      var tmp_path = fs.createReadStream(req.files.image.path);
        var target_path = './public/images/' + req.files.file.name +  randomNumber;

fs.rename(tmp_path, target_path, function(err) {
           // if (err) throw err;

            fs.unlink(tmp_path, function() {
               // if (err) throw err;
                //res.send('File uploaded to: ' + target_path + ' - ' + req.files.file.size + ' bytes');
            });
          });

我有完全相同的问题,我发现在使用multer时,我们必须确保这一行的名称('userPhoto')。single('userPhoto');匹配html表单中的文件名,问题是我们没有使用html表单获取任何图像,我们使用cordova插件从相机中获取它们。我用POSTMAN测试了端点,它可以在请求体中加载图像,并指定相同的名称“userPhoto”作为密钥。希望这能很快得到有用的答案。

仅传递图像的url在multer中不起作用,它是body parser模块的扩展。因此,您需要将图像或文件与请求正文一起传递。对于
userPhoto
问题,请删除
single
标记,因为它只允许上载名为
userPhoto
的单个照片
multer({storage:storage,fileFilter:fileFilter}).any()
Cordova CLI: 5.4.1
Gulp version:  CLI version 3.9.1
Gulp local:
Ionic CLI Version: 1.7.14
Ionic App Lib Version: 0.7.0
ios-deploy version: 1.8.4
ios-sim version: 5.0.4
OS: Mac OS X El Capitan
Node Version: v5.7.0
Xcode version: Xcode 7.2.1 Build version 7C1002
  var fs = require('fs');
      var tmp_path = fs.createReadStream(req.files.image.path);
        var target_path = './public/images/' + req.files.file.name +  randomNumber;

fs.rename(tmp_path, target_path, function(err) {
           // if (err) throw err;

            fs.unlink(tmp_path, function() {
               // if (err) throw err;
                //res.send('File uploaded to: ' + target_path + ' - ' + req.files.file.size + ' bytes');
            });
          });