Javascript 使用角度控制器在单个post请求中发送文件和一些字符串值
我试图上传一个图像到服务器,同时我通过$upload post方法发送一个字符串值。介绍了如何通过$upload方法处理请求的文件。我不知道如何访问通过post请求发送的字符串数据。这是我的控制器代码Javascript 使用角度控制器在单个post请求中发送文件和一些字符串值,javascript,angularjs,controller,angular-directive,Javascript,Angularjs,Controller,Angular Directive,我试图上传一个图像到服务器,同时我通过$upload post方法发送一个字符串值。介绍了如何通过$upload方法处理请求的文件。我不知道如何访问通过post请求发送的字符串数据。这是我的控制器代码 $scope.string1="abcd"; createFile = $scope.files.slice(0); console.log(createFile); console.log("upload function
$scope.string1="abcd";
createFile = $scope.files.slice(0);
console.log(createFile);
console.log("upload function");
if (createFile) { // console.log(file.name);
$scope.upload = $upload.upload({
url: '/uploadResortsImage', //upload.php script, node.js route, or servlet url
method: 'POST',
data: {
myObj: $scope.myModelObj,
$scope.dataone:$scope.string1,
},
file: createFile, // or list of files ($files) for html5 only
// fileName: this.name +'.pdf', //or ['1.jpg', '2.jpg', ...] // to modify the name of the file(s)
})
form.parse(req, function (err, fields, files) {
var data_received= fields.myObjB;
}
我的应用程序堆栈是meanjs,下面是我的服务器代码
exports.upload = function (req, res) {
console.log("upload function");
console.log(req);
var filename = '',
target_path = '';
console.log(req.files);
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
console.log(files.file);
var tmp_path = files.file.path;
var tmp_path_string = String(tmp_path);
console.log(tmp_path_string);
filename = files.file.name;
var dir = "./public/uploads";
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
var dir1 = dir + '/' + resortid;
if (!fs.existsSync(dir1)) {
fs.mkdirSync(dir1);
}
var dest_path = dir1 + "/";
target_path = dest_path + filename;
console.log(dest_path);
console.log(filename);
console.log(target_path);
var target_path_string = String(target_path);
fs.rename(tmp_path_string, target_path_string, function (err) {
if (err) {
throw err;
console.log("fail");
console.log(err);
} else {
console.log("successful");
done(err, resort);
}
});
});
}
form.parse(req, function (err, fields, files) {
var data_received= fields.myObjB;
}
我想这就是你需要的
data: {
myObj: $scope.myModelObj,
myObjB: $scope.string1,
},
form.parse(req, function (err, fields, files) {
var data_received= fields.myObjB;
}
然后,在服务器端,您只需访问myObjB属性,或者在传入表单值集合中决定调用它的任何内容,具体取决于您使用的服务器端。在数据对象中使用$scope.dataone作为属性名称没有意义,因为这是AngularJS代码中其他地方的一个范围属性,请坚持使用简单的属性名称。我在节点应用程序中使用了Formible plug。我的代码是这样的,我可以访问服务器端的send数据对象
form.parse(req, function (err, fields, files) {
var data_received= fields.myObjB;
}
谢谢。我正在服务器端使用nodejs。这是我的代码谢谢。我已经添加了发球代码。让我确认我正确理解了如何访问myObjB。在服务器代码的form.parse()方法中添加名为string1的参数是否正确,或者是否有其他方法访问它。如果在console.log(req)上的服务器端代码中只有一个断点,那么调试器中需要什么样的参数?我正试图在console中记录req.body.data,但它未定义。你能回答我更多的信息吗。谢谢,我的意思是,如果您在console.log(req)中中断,调试程序中的req看起来是什么样子?
form.parse(req, function (err, fields, files) {
var data_received= fields.myObjB;
}