Bag*_*yer 6 node.js express ionic-framework multer
关于Node.js Express框架的文件上传,网上有很多例子.但他们中的大多数都在使用m .. 所有这些都是从表单加载文件.
但我的情况有所不同.我的应用程序将从手机中选择一张图像并上传到服务器(通过在Ionic中使用cordova-file-transfer插件).在这种情况下,我根本没有表格.所以没有req.files.有什么建议吗?谢谢.
PS: 这是我服务器中的日志记录我的http标头:
{ host: 'localhost:3000',
'x-requested-with': 'XMLHttpRequest',
accept: '*/*',
'content-type': 'multipart/form-data; boundary=+++++org.apache.cordova.formBoundary',
'content-length': '23394',
'accept-language': 'en-us',
'accept-encoding': 'gzip, deflate',
connection: 'keep-alive',
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13C75 (2079040640)' }
Run Code Online (Sandbox Code Playgroud)
我的服务器代码:
app.post('/', multer({dest:'./uploads/'}).single('upl'),(req,res) => {
console.dir(req.headers)
console.dir(req.body)
res.status(204).end()
})
Run Code Online (Sandbox Code Playgroud)
显然,'upl'在我的案例中没有定义.
如果有人有同样的问题,这是我的完整源代码和解释.
一个离子应用程序,它使用cordova-file-transfer插件将文件从照片库上传到node.js express服务器.
var express = require('express')
var multer = require('multer')
var bodyParser = require('body-parser')
var path = require('path')
var app = express()
// settings
app.set('views', path.join(__dirname,'views'))
app.set('view engine','jade')
// middleware
app.use(bodyParser.json())
// route
app.get('/', (req,res) => {
res.render('index')
})
app.post('/', multer({dest:'./uploads/'}).single('upl'),(req,res) => {
console.log(req.body)
console.log(req.file)
res.status(204).end()
})
// start
var server = app.listen(3000, () => {
console.log('Started at port ' + server.address().port)
})
Run Code Online (Sandbox Code Playgroud)
upload() {
var options = new FileUploadOptions()
options.fileKey = "upl"; // this equal to <input type="file" id="upl">
options.fileName = 'test.jpg';
options.mimeType = "image/jpg";
options.chunkedMode = false;
options.params = {'directory' : 'uploads', 'fileName': 'test.jpg'};
var ft = new FileTransfer()
ft.upload(this.thumbnail, encodeURI('http://localhost:3000/'),
(res) => {
console.log("Code = " + res.responseCode)
console.log("Response = " + res.response)
console.log("Sent = " + res.bytesSent)
},(error) => {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
},options)
}
Run Code Online (Sandbox Code Playgroud)
this.thumbnail是我的文件路径,例如在我的ios中,路径类似于:
文件:///Users/myusername/Library/Developer/CoreSimulator/Devices/81B513B7-AE34-4911-A9C9-57E293957BEC/data/Containers/Data/Application/C9A0BE15-EA4A-4DD8-9E75-BC960ECF50B7/tmp/cdv_photo_016.jpg
归档时间: |
|
查看次数: |
5615 次 |
最近记录: |