0
因此,這是我第三天試圖弄清楚這一點,所以我想我會尋求一些幫助。從bootstrap/angular ejs文件上傳文件到node.js網站
我在想方設法上傳帶有文件名或關鍵字的文件,以便稍後可以搜索文件。我將它們保存到數據集中,以便當我想在流程中添加另一個步驟時,我可以搜索已經上傳的圖像,以便它們可以重複使用。至少這是目標,但我似乎無法獲得上傳文件的第一步。
在EJS文件,我有這樣的形式:
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">{{modal_header}}</h4>
</div>
<div class="modal-body">
<form >
<div class="form-group">
<label for="ProblemInput">Step</label>
<input type="text" class="form-control" id="ProblemInput" placeholder="Step Number" ng-model="step">
</div>
<p class="form-group">
<label for="DescriptionInput">Description</label>
<textarea class="form-control" id="DescriptionInput" placeholder="Detail Description" ng-model="description"></textarea>
</p>
<input
type="file"
ngf-select
ng-model="file"
name="file"
ngf-pattern="'image/*'"
accept="image/*"
ngf-max-size="20MB"
/>
Image thumbnail: <img style="width:100px;" ngf-thumbnail="file || '/thumb.jpg'"/>
<i ng-show="file.$error.required">*required</i><br>
<i ng-show="file.$error.maxSize">File too large
{{file.size/1000000|number:1}}MB: max 20M</i>
</form>
</div>
<div class="modal-footer">
<!-- <button type="button" data-ng-click="SaveNAdd()" class="btn btn-default" >Save and Add Another</button> -->
<button type="button" ng-hide="_id" data-ng-click="Save()" class="btn btn-default" data-dismiss="modal">Save</button>
<button type="button" ng-show="_id" data-ng-click="Update()" class="btn btn-default" data-dismiss="modal">Update</button>
<button type="button" data-ng-click="Reset()" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
在JS控制器,我有這樣的: (剛工作的保存開始)
$ scope.Save =函數(){
var data =
{
Problem: $scope.problem
,description: $scope.description
,resolution: $scope.resolution
,images : $scope.file
,id : $scope._id
};
console.log($scope.m_problem._id);
$http.post("/kbasefull/" + $scope.m_problem._id + "/scriptAdd", data).
success(function(data) { $scope.m_datalist = data; Reset();})
.error(function(data) {console.log(data + "failure");});
//}
}
在節點服務器,我有這樣的:
var multer = require('multer');
var upload = multer({ dest: './public/kbase_img/'});
app.post('/KBasefull/:m_id/scriptAdd', upload.single('req.body.images'), function(req, res) {
console.log(req.body.file);
m_Kbase_data.find({_id : req.params.m_id}, function(err, kbase_data){
if (err){
console.log(err);
}
if (!kbase_data.length){
console.log("No Kbase Data!");
res.render('kbase', { Problem : JSON.stringify("") });
}
else{
console.log(kbase_data[0]._id);
//res.render('kbasefull', { Problem : JSON.stringify(kbase_data[0])});
// var sampleFile = req.body.file;
// require("fs").writeFile("./public/kbase_img/out.png", sampleFile.data, 'base64', function(err) {
// console.log(err);
// });
console.log(req.body) // form fields
console.log(req.file) // form files
res.status(204).end()
}
});
});
寫文件創建了一個文件,但我看不懂它。多層似乎沒有看到任何東西。
想法?
我在後期例程中獲取文件。在我的console.log(req.body)中,我有一個圖像變量:images:{'$ ngfDataUrl':'data:image/png; base64,iVBORw0KGgoAAAANSUhEUgA ...... – user269964
我注意到有角度的一面我有文件名和最後修改和我可以看到的其他東西。但是,我沒有在郵件一方。我認爲我沒有得到完整的記錄。 – user269964