Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用cordova在android中授予文件权限_Android_Node.js_Cordova_Vue.js - Fatal编程技术网

如何使用cordova在android中授予文件权限

如何使用cordova在android中授予文件权限,android,node.js,cordova,vue.js,Android,Node.js,Cordova,Vue.js,我已经创建了一个vue项目,其中我使用cordova作为vue中的插件。我有一个场景,使用cordova文件传输插件,我想将文件上传到我使用multer软件包在node.js中创建的服务器上 我可以选择文件,但由于某些权限被拒绝,文件无法上载。 那么我该如何解决我的问题呢?我已经在AndroidManifest.xml文件中添加了权限,但仍然拒绝了我的权限,我不知道这个应用程序到底出了什么问题 任何帮助都将不胜感激 客户端代码 上传文件 导出默认值{ 数据(){ 返回{ } }, 安装的(

我已经创建了一个vue项目,其中我使用cordova作为vue中的插件。我有一个场景,使用cordova文件传输插件,我想将文件上传到我使用multer软件包在node.js中创建的服务器上

我可以选择文件,但由于某些权限被拒绝,文件无法上载。 那么我该如何解决我的问题呢?我已经在
AndroidManifest.xml
文件中添加了权限,但仍然拒绝了我的权限,我不知道这个应用程序到底出了什么问题

任何帮助都将不胜感激

客户端代码






上传文件 导出默认值{ 数据(){ 返回{ } }, 安装的(){ 文件。添加的监听器(“deviceready”,OnDeviceraddy,false); 函数ondevicerady(){ console.log(window.FileTransfer); } }, 方法:{ 选择文件(){ window.fileChooser.open((文件)=>{ this.upload(file.uri+file.name) }) }, 上传(文件URL){ var permissions=window.cordova.plugins.permissions; permissions.hasPermission(permissions.CAMERA,函数(状态){ if(status.hasPermission){ 警告(“是:D”); } 否则{ 警报(“否:(”); 权限。请求权限( [权限.操作\u打开\u文档], 功能(状态){ 如果(!status.hasPermission)警报(“hhh”); }, 警报(“摄像头或帐户权限未打开”); } }); var path=fileURL 路径=路径。替换(“%”,“%25”); 警报('路径:'+路径) fileURL=path var options=new window.FileUploadOptions(); options.fileKey=“image”; options.httpMethod='POST'; options.fileName=fileURL.substr(fileURL.lastIndexOf('/')+1); options.mimeType=“image/jpeg”; var ft=new window.FileTransfer(); ft.upload(文件URL,编码URI(“http://localhost:8000/user/fileUpload“(r)=> { console.log(“Code=“+r.responseCode”); console.log(“Response=“+r.Response”); console.log(“Sent=”+r.bytesSent);},(error)=>{ 警报(JSON.stringify(错误)); console.log(“上传错误源”+错误源); 日志(“上传错误目标”+错误目标); },选项); } } }
服务器端代码

var express=require('express');
常量app=express();
常数端口=8000;
应用程序获取(“/”,(请求,请求)=>{
res.send('hello people');
});
var multer=需要('multer');
var storage=multer.diskStorage({
目标:功能(请求、文件、cb){
cb(空,“/上传”);
},
文件名:函数(请求、文件、cb){
cb(null,file.originalname);
}
});
var upload=multer({dest:'uploads/'});
//var upload=multer({storage:storage})
app.post('/user/fileUpload',upload.single('image'),(req,res)=>{
试一试{
res.send(请求文件);
}捕捉(错误){
res.send(400);
}
});
应用程序侦听(端口,()=>{
log('侦听端口:'+端口);
});
AndroidManifest.xml


当我从文件夹中选择图像文件时,不会打开“向我发出照相机或帐户权限的警报消息”,然后会发出类似以下内容的警报消息:-


{“代码”;3,“源代码”content://com.android.providers.media.documents/document/image%253A1961Image-name.jpg,“target”:我的服务器api。“权限拒绝”:阅读com.android.providers.media.documents/MediaDocumentsProvideruri要求您使用ACTION\u OPEN\u DOCUMENT或相关API获得访问权限。

我解决了这个问题。我唯一的错误是我用uri传递了文件名,我们只需要在fileChooser.OPEN()中传递uri函数。我将发布客户端代码。以下是解决方案:-

已解决的客户端代码






上传文件 导出默认值{ 数据(){ 返回{ } }, 安装的(){ 文件。添加的监听器(“deviceready”,OnDeviceraddy,false); 函数ondevicerady(){ console.log(window.FileTransfer); } }, 方法:{ 选择文件(){ window.fileChooser.open((文件)=>{ 上传(file.uri); }) }, 上传(文件URL){ var options=new window.FileUploadOptions(); options.fileKey=“image”; options.httpMethod='POST'; options.fileName=fileURL.substr(fileURL.lastIndexOf('/')+1); options.mimeType=“image/jpeg”; var ft=new window.FileTransfer(); ft.upload(文件URL,编码URI(“http://192.168.1.111:8000/user/fileUpload“(r)=> { 警报(“已成功上载…” console.log(“Code=“+r.responseCode”); console.log(“Response=“+r.Response”); console.log(“Sent=”+r.bytesSent);},(error)=>{ 警报(JSON.stringify(错误)); console.log(“上传错误源”+错误源); 日志(“上传错误目标”+错误目标); },选项); } } }