使用phonegap框架访问Android设备上的图像文件

时间:2015-12-16 01:39:30

标签: javascript android phonegap-plugins

我正在使用Phonegap 5.3.1和Android 22.我正在尝试使用phonegap的Filetransfer api将图像传输到远程服务器。

var options = new FileUploadOptions();          
options.fileKey="file";
options.fileName=imageData.substr(imageData.lastIndexOf('/')+1);
alert("The filename here is : " + imageData);

所以这里的imageData打印

content //com.android.providers.media.documents/document/image/image%3A53

以及下面的代码

imageData.substr(imageData.lastIndexOf('/')+1);

确定分配options.fileName =" image%3A53"

这不是我在设备上的图像名称。在我看来,这是一个问题。

用于运行FileTransfer插件的javascript表示文件已成功传输但我在服务器上找不到该文件(运行PHP)。

服务器响应如下:

从服务器获得响应

  Array
  (
      [file] => Array
          (
              [name] => image%3A53
              [type] => image/jpeg
              [tmp_name] => /tmp/php8qjZXN
              [error] => 0
              [size] => 137490
          )
  )

也有一些帖子说: Phonegap android unable to upload image using fileTransfer

你不能使用你在FileTransfer上传方法中从相机成功回调获得的imageUri,你必须首先解析uri作为这样的文件名:

navigator.camera.getPicture(function(imageURI){

      window.resolveLocalFileSystemURI(imageUri, function(fileEntry) {
            fileEntry.file(function(fileObj) {

                var fileName = fileObj.fullPath;

                //now use the fileName in your method
                //ft.upload(fileName ,serverURL + '/ajax.php?fname=appuploadspotimage'...);

            });
        });
});

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案。问题不在客户端,而是在服务器端。 我提到了以下帖子: fileupload success, but no photos in the server (phonegap android)

关键是"您是否检查了文件夹和脚本权限?它们都应该具有相同的用户/组。如果您正在运行Apache,它将类似于apache:apache。从cmd行你可以运行chown apache:apache upload.php然后chown -R apache:apache php /"

函数move_upload_file([source],[destination])。 images文件夹的路径应位于您的网站根目录下的某个位置。上传的文件从/ tmp移动到您的上传文件夹。该文件夹(以及完成工作的脚本)需要由apache拥有。

我如上所述获得了权限,但它确实有效。感谢所有人及时回复。