Ionic Cordova文件传输上传错误代码% 1

yks3o0rb  于 2023-11-15  发布在  Ionic
关注(0)|答案(3)|浏览(192)

我使用cordova文件传输上传图像到服务器。问题是cordova文件传输总是抛出错误代码1。它的工作之前,今天突然停止工作。
我没有看到服务器上收到任何参数选项值。我的代码

savebase64AsImageFile(folderpath,filename,realData,dataType,q).then(function (success){
    console.log(success);
    $cordovaFile.checkFile(folderpath, filename).then(function (success) {
            console.log(success);
            success.getMetadata(function(metadata) {
            console.log('meta size2 ' +metadata.size); 
        });
    }, function (error) {

});
$scope.data.image = filename;
$cordovaFileTransfer.upload(encodeURI(server), filePath, options, true).then(function(result) {...

字符串
我已经使用$cordovaFile.checkFile进行了检查,以确保文件存在。

var options ={
        fileName: filename,
        chunkedMode: true,
        params:{'user_id' : $scope.data.userid},
        headers:{Connection: 'close'}
    };


在我的服务器上,我正在使用Laravel,但$request数据是空的,我无法访问文件或user_id。
对于我使用的文件夹路径,

var folderpath = cordova.file.dataDirectory;
var filePath = folderpath + filename;


filepath将返回文件位置
file:///data/user/0/com.ionicframework.test3829076/files/PV5xo1506004208779.jpg
我在android设备上测试这个
文件传输错误x1c 0d1x
状态409是我在请求为空时给出的数字
知道是什么导致这个错误吗?这部分代码以前总是工作的。

ipakzgxi

ipakzgxi1#

根据文档,你有你的参数向后。它的上传(文件路径,服务器,等)
https://www.npmjs.com/package/cordova-plugin-file-transfer

bnlyeluc

bnlyeluc2#

尝试不使用选项上传或使用

var options ={
    fileName: filename,
    chunkedMode: false,
    params:{'user_id' : $scope.data.userid},
    headers:{Connection: 'close'}
};

字符串

3wabscal

3wabscal3#

代码1可能是访问问题。在我的情况下,文件权限有问题。如果你使用的sdk版本低于29(android 10),你必须强制用户给予读取权限
添加cordova-plugin-android-permissions在Android. xml

const filesPermissions = (permissions) => [
 permissions.READ_EXTERNAL_STORAGE,
 permissions.WRITE_EXTERNAL_STORAGE,
];

const checkFilesPermissions = async () => {
  const { permissions } = window.cordova.plugins;
  return Promise.all(filesPermissions(permissions).map(permission => {
    return new Promise((resolve, reject) => permissions.checkPermission(permission, resolve, reject));
  })).then(statuses => statuses.every(status => status.hasPermission));
};

const requestFilesPermissions = async () => {
    const { permissions } = window.cordova.plugins;
    return new Promise((resolve, reject) => {
        permissions.requestPermissions(filesPermissions(permissions), resolve, reject);
  }).then(status => status.hasPermission);
};

字符串
//onClickList:

if (deviceService.isAndroidPlatform()) {
  try {
    let hasFilesPermissions = await checkFilesPermissions();
    if (!hasFilesPermissions) {
      hasFilesPermissions = await requestFilesPermissions();
    }
    if (!hasFilesPermissions) {
      throw new Error('There is no permissions to download files. Please enable it in system preferences');
    }
  } catch (error) {
    alert(error.message)
  }
}


//然后像往常一样使用cordova-plugin-file-transfer上传文件
注意:您必须在AndroidManifest.xml中启用READ_EXTERNAL_CODE和WRITE_EXTERNAL_CODE

相关问题