Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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 从前端传递数据以创建动态多目标文件夹_Javascript_Angularjs_Node.js_Multipartform Data_Multer - Fatal编程技术网

Javascript 从前端传递数据以创建动态多目标文件夹

Javascript 从前端传递数据以创建动态多目标文件夹,javascript,angularjs,node.js,multipartform-data,multer,Javascript,Angularjs,Node.js,Multipartform Data,Multer,如何将uploadYear从角度服务传递到Multer目的地,以获得动态路径,例如“/public/uploads/”+uploadedYear multer的工作方式,对我来说似乎非常扭曲,我无法确定在哪里存储额外的对象,以便它可以一直到multer目的地 基本上,我看不到myfile如何从前端移动到后端或如何在后端访问它的踪迹 角度服务 this.uploadCV = function (file, uploadYear) { console.log(uploadYe

如何将
uploadYear
从角度服务传递到Multer目的地,以获得动态路径,例如“/public/uploads/”+uploadedYear

multer的工作方式,对我来说似乎非常扭曲,我无法确定在哪里存储额外的对象,以便它可以一直到multer目的地

基本上,我看不到
myfile
如何从前端移动到后端或如何在后端访问它的踪迹

角度服务

    this.uploadCV = function (file, uploadYear) {
        console.log(uploadYear)  //output 2017
        var fd = new FormData()
        fd.append('myfile', file.upload)
        return $http.post('/api/uploadCV', fd, {
            transformRequest: angular.identity,
            headers: { 'Content-Type': undefined }
        })
    }
API

var cv = ''
var CVstorage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './public/uploads')
    },
    filename: function (req, file, cb) {
        if (!file.originalname.match(/\.(jpg)$/)) {
            var err = new Error()
            err.code = 'filetype'
            return cb(err)
        } else {
            cv = file.originalname
            cb(null, cv)
        }
    }
})
var uploadCV = multer(
    {
        storage: CVstorage,
        limits: { fileSize: 10000000 } //limit 10 MB
    })
    .single('myfile')

//API Route
router.post('/uploadCV', function (req, res) {
    uploadCV(req, res, function (err) {
            if (!req.file) {
                //error handle
            } else {
                res.json({ success: true, cv: cv })
            }
    })
})

您可以将其作为标头中的参数发送:

 $http.post('/api/uploadCV', fd, {
            transformRequest: angular.identity,
            headers: { 
              'Content-Type': undefined,
              'path': uploadYear
            }
        });

然后在您的后端,您可以通过req.headers.path

获取它,您可以将其作为header中的参数发送:

 $http.post('/api/uploadCV', fd, {
            transformRequest: angular.identity,
            headers: { 
              'Content-Type': undefined,
              'path': uploadYear
            }
        });

然后在您的后端,您可以通过req.headers.path

获得它,我在服务中添加了
path
,尝试将
console.log(req.query.path)
放入
router.post('/uploadCV',function(req,res){…}/code>中,我得到未定义的输出,还尝试将其放入
uploadCV(req,res function(err){…}
仍然没有定义你使用expressJS吗?你能试试console.log(JSON.stringify(req.headers));是的,
console.log(req.headers.path)
工作了。!谢谢,我想你可以改变你的答案。太棒了,很高兴它有帮助了,答案被改变了;)我在服务中添加了
路径,试着放置
console.log(req.query.path)
router.post('/uploadCV',function(req,res){…}
中,我得到了未定义的输出,并且我尝试将其放入
uploadCV(req,res,function(err){…}
中。您使用expressJS吗?您可以尝试一下console.log(JSON.stringify(req.headers));是的,
console.log(req.headers.path)
成功了。!谢谢!我想你可以改变你的答案。太棒了,很高兴它有帮助,答案改变了;)