Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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
Php 来自输入的Phonegap 3.7.0电子邮件文件[类型=文件]_Php_Android_Ajax_Cordova_Email - Fatal编程技术网

Php 来自输入的Phonegap 3.7.0电子邮件文件[类型=文件]

Php 来自输入的Phonegap 3.7.0电子邮件文件[类型=文件],php,android,ajax,cordova,email,Php,Android,Ajax,Cordova,Email,我在使用phonegap开发的应用程序中发送文件时遇到问题。 我是phonegap的新手,所以我可能试图用一种完全错误的方式来解决这个问题,所以让我先描述一下最终目标 我正在开发一个租车应用程序,我需要制作一个联系表单,这样用户就可以留下租车订单。 该表单要求用户输入一些基本信息,如姓名和电话号码,并附上照片或驾照扫描 我能够理解基本信息部分。我使用$.ajax数据类型:“jsonp”将数据发送到服务器,然后通过电子邮件发送到我客户的地址 但是我可以找到一种方法将文件发送到服务器。 我使用输入[

我在使用phonegap开发的应用程序中发送文件时遇到问题。 我是phonegap的新手,所以我可能试图用一种完全错误的方式来解决这个问题,所以让我先描述一下最终目标

我正在开发一个租车应用程序,我需要制作一个联系表单,这样用户就可以留下租车订单。 该表单要求用户输入一些基本信息,如姓名和电话号码,并附上照片或驾照扫描

我能够理解基本信息部分。我使用$.ajax数据类型:“jsonp”将数据发送到服务器,然后通过电子邮件发送到我客户的地址

但是我可以找到一种方法将文件发送到服务器。 我使用输入[type=file]字段让用户选择要上传的文件。 我尝试过使用FileTransfer上传文件,但显然input[type=file]提供了一些虚假的文件路径,FileTransfer.upload()无法直接使用这些路径

问题是,我不明白如何为FileTransfer.upload函数获取正确的文件路径

我尝试了另一种方法,使用FileReader读取文件。 我尝试读取该文件并将图像src设置为结果,但不起作用(它显示的是损坏的图像图标,而不是图像,相同的代码在PC上工作)。 我还尝试将其输出为文本,这确实会输出一些数据(为什么它不适用于image src?)

因为我成功地将从文件中读取的数据输出为文本,所以我想我会将其发送到服务器并保存它

下面是代码的样子: 在输入更改时,我将文件读入一个全局变量

$(".file1").change(function(e){
    var caster = e.target;
    var files = caster.files;

    if(FileReader && files && files.length) {
        var fr = new FileReader();
        fr.onloadend = function(e) {
            //$(".image").attr("src",e.target.result);
            window.file1base64 = e.target.result;
        }
        fr.readAsDataURL(files[0]);
    }
});
然后,当用户按下按钮时,我运行FileTransfer.upload,然后每隔0.1秒检查一次文件上传是否完成

function uploadSuccess(r) {
    $(".output").append(" Success ");
    window.fileStatus = true;
}

function uploadError(error) {
    $(".output").append(" Error "+error.code+" ");
    window.fileStatus = true;
    window.fileError = error.code;
}

function uploadFile() {
    $(".output").append(" uploadFile ");
    file = $('.file1').val().split('\\').pop();
    $(".output").append(" File-"+file+" ");

    if(file){
        $(".output").append(" fileExists ");
        var options = new FileUploadOptions();
        options.fileKey = "file";
        options.fileName = file;
        options.mimeType = "image/jpeg";
        options.chunkedMode = false;
        options.headers = {
            Connection: "close"
        };

        $(".output").append(" FileUploadOptions ");
        window.fileStatus = false;
        window.fileError = '';

        //fileuri = $(".image").attr("src");
        fileuri = window.file1base64;

        $(".output").append(" fileuri ");
        var ft = new FileTransfer();
        ft.upload(fileuri, encodeURI("http://***.***/savefile.php"), uploadSuccess, uploadError, options);

        $(".output").append(" upload ");
        checkFile();
    }
}

function checkFile() {
    if(!window.fileStatus) {
        $(".output").append(" check ");
        setTimeout(checkFile, 100);
        return;
    }
}
经过一些检查,它打印出错误3,我不知道这意味着什么,也不知道如何修复它

服务器端代码如下所示: 获取文件并保存它

$dir_name = dirname(__FILE__)."/uploadedimages/";
move_uploaded_file($_FILES["file"]["tmp_name"], $dir_name."test.txt");

但是没有在服务器上创建任何文件。

使用
FormData
对象获取表单数据(包括输入文件),并通过以下方式提交:

var data = new FormData($('#yourFormID')[0]);
$.ajax({
        url: serverURL,
        data: data,
        cache:false,
        contentType: false,
        processData: false,
        type: 'POST',
        error: function(jqXHR,textStatus,errorThrown){

        },
        success: function(data){

        }
});

您应该在某个变量中设置FILEURL,在某个html图像元素中设置image,然后使用它来传输图像

像这样:

 function onPgCameraSuccess(imageData) {

    fileEntry.file(
    function(fileObj) {
            var previewImage= document.getElementById('SomeImageElement');
            fileName=imageData.substr(imageData.lastIndexOf('/')+1);
            fileURL=imageData;
            previewImage.src =imageData;
            $('#SomeTextBox').val(fileName);
        });
}

function SubmitPhoto(){
    var uOptions = new FileUploadOptions();
    var ft = new FileTransfer();

    uOptions .fileKey = "keyofyourfileonserver";
    uOptions .fileName = fileName;
    uOptions .mimeType = "image/jpeg"; 
    uOptions .httpMethod = "POST";
    uOptions .params = params;



    ft.upload(fileURL,
        urlofsvc,
        photoSuccess,
        photoFail,
        uOptions,
        true
    );}