我试图将文件从angular传递给节点。
我设法让前端运行起来。它允许用户选择一个她随后在控制器中访问的文件:
scope.upload = function() {
if (scope.file) {
var uniqueFileName = 'Test/' + scope.file.name;
var params = {
Key: uniqueFileName,
ContentType: scope.file.type,
Body: scope.file
};
console.log(params); // Params contains the file I wish to pass to node
}
}
现在我该如何将此参数传递给节点?
让我们说我在服务器上创建了这样的路线:
app.post('/upload', function(req, res) {
// Can I get req to hold the param maybe?
});
我是否有可能以某种方式将参数直接从ng-controller传递到此路径?
谢谢
编辑:
这是我到目前为止所得到的:
scope.upload = function() {
if (scope.file) {
var uniqueFileName = 'Test/' + scope.file.name;
var params = {
Key: uniqueFileName,
ContentType: scope.file.type,
Body: scope.file
};
console.log(params); // Params contains the file I wish to pass to node
$http
.post('/uploads', {stickie: params})
.success(function(data){
//what to do here
})
.error(function(data){
console.log('Error: ' + data);
});
}
我应该补充说,尝试传递给节点的文件是pdf。
现在我可以像这样访问params-object innode:
app.post('/uploads', function(req, res) {
var file = req.body.stickie;
console.log(file);
但由于某些原因stickie.Body
似乎没有被传递......
以下是在服务器上记录的内容:
{ Key: 'Test/myfilename',
ContentType: 'application/pdf',
Body: {}
}
感觉就像我很近但为什么身体不出现?
答案 0 :(得分:0)
//node.js
app.post('/upload_file', function(req, res){
var file = req.file;
res.end();
});
$(document).ready(function(){
$('#input').change(function(e) {
var files = e.target.files;
$.each(files, function(index, file) {
var name = file.name;
var ext = file_extension(name).toLowerCase();
var size = file.size;
var type = file.type;
var fr = new FileReader();
fr.readAsDataURL(file);
fr.onload = function(){
var new_file = {};
new_file.name = name;
new_file.size = size;
new_file.type = type;
new_file.content =fr.result;
send_file(new_file);
}
});
});
})
function send_file(file){
var url_server = "your_url/upload_file";
$.ajax({
type : "POST",
url : url_server,
dataType : "json",
async : true,
data : ({
file : file
}),
success : function (data) {
},
error : function (request, status, error) {
console.log(request);
}
});
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
在节点服务器上使用multer进行文件上传