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