1

我正在尝试连接照片以上传到服务器..没有cordova 1.7.0示例..只是尝试一下,但它不起作用。我的错误是.. wait_fences:未能收到回复:10004003。

function capturePhoto() {
  // Take picture using device camera and retrieve image as base64-encoded string
  navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
    destinationType: destinationType.DATA_URL });
}


// A button will call this function
//
function getPhoto(source) {
  // Retrieve image file location from specified source
  navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
    destinationType: destinationType.FILE_URI,
    sourceType: source });
}


 function onSuccess(imageData) { 
 var image = document.getElementById('myImage');
 image.src = "data:image/jpeg;base64," + imageData;
 $.post('http://site.com/api/upload.php', {data:imageData});
 }

<?php 

if ($_REQUEST['image']) {

// convert the image data from base64
$imgData = base64_decode($_REQUEST['image']);

// set the image paths
$file = '/api/' . md5(date('Ymdgisu')) . '.jpg';
$url = 'http://www.site.com' . $file; 

// delete the image if it already exists
if (file_exists($file)) { unlink($file); }

// write the imgData to the file
$fp = fopen($file, 'w');
fwrite($fp, $imgData);
fclose($fp);
}

?>
4

3 回答 3

1
try this one if its helpful to you.

$image = $_REQUEST['image'];
$name = date('Ymdgisu') . '.jpg';
base64_decode_image($image, $name);

function base64_decode_image($image, $name){
    if ($image){
        $new_file = fopen("/api/" . $name, "x");
        fwrite($new_file, base64_decode($image));
        fclose($new_file);
        //echo base64_decode($image);
    }
}
于 2012-05-19T16:51:56.250 回答
0

我想你可以这样使用。

navigator.camera.getPicture(onSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.DATA_URL });

function onSuccess(imageData) {
//var image = document.getElementById('myImage');
//image.src = "data:image/jpeg;base64," + imageData;
$.post('http://www.site.com/api/upload.php', {data:imageData});
}

function onFail(message) {
alert('Failed because: ' + message);
}

这里的 onSuccess 函数返回 base64 编码图像字符串,您可以将其传递给 upload.php 文件

于 2012-05-17T04:25:30.340 回答
0

编写以下代码以使用 Cordova 的相机和文件传输插件上传照片。在 iOS 上运行,并假设它在 PhoneGap / Cordova 支持的所有移动浏览器上运行。

Cordova 照片上传示例:
cordova 文件传输插件在 ios 模拟器中不起作用


Cordova 的文件传输插件 ( https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file-transfer/index.html ) 支持二进制 (FILE_URI) 或 base64 (DATA_URI) 上传。

传统上,文件(如照片)以二进制形式保存到磁盘,然后以 mime 类型multipart/form-dataapplication/octet-stream.

在 base64 中,您的高分辨率照片会保存到浏览器缓存中,这可能会导致内存溢出,因为浏览器旨在链接到高分辨率图像而不是缓存它们。此外,base64 文件比二进制文件大 37%,所以这也无济于事。

TL;博士;

  1. 安装 Cordova 相机插件和 Cordova 文件传输插件
    > cordova plugin add cordova-plugin-camera --save;
    > cordova plugin add cordova-plugin-file-transfer --save;

  2. 将相机选项设置为 FILE_URI

    navigator.camera.getPicture(success, error, {
      destinationType: destinationType.FILE_URI
    });
    
  3. 使用 Cordova 的 Transfer File 插件上传照片

    var request = new FileTransfer();
    var options = new FileTransferOptions();
    request.upload(fileUri, success, error, options);
    
于 2016-06-18T01:17:08.230 回答