在php中回显整个文件并发送到jquery

时间:2013-10-18 18:35:59

标签: php jquery jquery-plugins jquery-forms-plugin

我正在使用JQuery Form Plugin上传文件。我能够将上传的txt文件的内容发送到与表单插件相关联的jquery,但我想发送整个文件。

现在我在我的php中回显变量$ c,这被发送到我的jquery。我能以某种方式用$ file发送整个文件吗?

<?php

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');

foreach($_FILES as $file) {
    $n = $file['name'];
    $s = $file['size'];
$t = $file["tmp_name"];
$c= file_get_contents($t);


    if (is_array($n)) {
        $c = count($n);
        for ($i=0; $i < $c; $i++) {
            //echo "<br>uploaded: " . $n[$i] . " (" . $s[$i] . " bytes)";

        }
    }
    else {
        //echo "<br>uploaded: $n ($s bytes)";
    }
 //echo "<br>uploaded: $n ($s bytes)";
}

echo $c;

?>

然后在jquery表单插件的jquery中:

$(document).ready(function() {

    (function() {

    var bar = $('.bar');
    var percent = $('.percent');
    var status = $('#status');

    $('#dataform').ajaxForm({
        beforeSend: function() {
            status.empty();
            var percentVal = '0%';
            bar.width(percentVal)
            percent.html(percentVal);
        },
        uploadProgress: function(event, position, total, percentComplete) {
            var percentVal = percentComplete + '%';
            bar.width(percentVal)
            percent.html(percentVal);
        },
        success: function(data, responseText, statusText, $form) {
            var percentVal = '100%';
            bar.width(percentVal)
            percent.html(percentVal);

            $.post('/submit', {name: data}, function(data) {
                $('body').append(data);
                });

        },
    complete: function(xhr) {
        status.html(xhr.responseText);
    }
    //
    }); 
    return false;
    })();       

});  

2 个答案:

答案 0 :(得分:1)

你只需要记住一件事,ajax请求将读取服务器发送的输出,这就是为什么它只读取echo ed语句,只是决定你要发送什么并将其发送为纯文本或您喜欢的任何形式,如果您想获取文件,可能会出现问题,因为服务器将尝试执行内容(如果它是php文件,但是有一个简单的黑客,重命名扩展名该文件类似于txt,服务器将按原样发送,这是您的决定。

答案 1 :(得分:1)

发送文件内容相当于发送文件。问题是,你为什么要做你想要的。如果你想在服务器端节省文件处理,那么我担心这只是这样做的方法。