我一直在尝试从移动设备上传文件到服务器(节点) . 我使用的技术是离子的 . 我正在使用文件传输插件来上传服务器上的文件,但这不起作用 .
离子细节:
离子型:
离子(离子CLI):4.1.2离子结构:离子角度3.5.3 @ ionic / app-scripts:2.1.4
科尔多瓦:
cordova(Cordova CLI):8.1.2(cordova-lib@8.1.1)Cordova平台:android 6.4.0 Cordova插件:没有白名插件(总共15个插件)
系统:
NodeJS:v8.11.2(C:\ Program Files \ nodejs \ node.exe)npm:5.6.0操作系统:Windows 10
客户代码:
public uploadVideo(path:any){
const fileTransfer: FileTransferObject = this.transfer.create();
let options1: FileUploadOptions = {
fileKey: 'video_upload_file',
fileName: path,
headers: {},
mimeType: 'webm',
params: {},
chunkedMode: false
};
fileTransfer.upload(path, 'https://forcast.co.in:2443/api/answer/fileuploadionic', options1)
.then((data) => {
const alert = this.alertCtrl.create({
title: 'Success',
subTitle: 'data saved successfully',
buttons: ['OK']
});
alert.present();
}, (err) => {
const alert = this.alertCtrl.create({
title: 'Error',
subTitle:JSON.stringify(err),
buttons: ['OK']
});
alert.present();
})
}
下面是服务器端代码 .
const storage = multer.diskStorage({
destination: (req: Request, file, cb) => {
cb(null, video_path.dest + 'temp//');
}, filename: (req:Request, file, cb) => {
let fileName = req.params.id + '_' + req.params.qId + new Date().getTime() + '.' + req.params.mediaType;
cb(null, fileName);
}
})
const upload = multer({ storage: storage });
export class AnswerRoute extends BaseRoute {
constructor() {
super();
}
public static create():Router {
let router: express.Router = express.Router();
router.post("/fileuploadionic",(req: Request, res: Response, next: NextFunction) => {
new AnswerRoute().fileuploadionic(req, res, next);
});
return router
}
public fileuploadionic(req: Request, res: Response, next: NextFunction) {
this.logRequest(req);
console.log("in answerts for req files "+req.files)
}
}
在文件上传离子方法我只是打印req . 但是req.files说文件是未定义的错误 . 我在哪里错了?