使用提交按钮进行插入传输

时间:2016-07-03 17:51:51

标签: javascript php

我想用提交按钮发送所有文件。上传工作正常,但使用提交按钮的传输无法正常工作。当我发送表单时,文件被上传但传输不会转到dump.php。我需要再次选择按钮以获得dump.php的传输。 我正在使用这个代码和简单的数字数组作为例子:

<form id="form" method="post" action="dump.php" enctype="multipart/form-data">
<?php
$num = array('1','2','3');
foreach ($num as $upid) {
?>
<div id="uploader<?php echo $upid;?>">
    <p>Your browser doesn't have Flash, Silverlight or HTML5 support.</p>
</div>

<script type="text/javascript">
$(function() {
    // Setup html5 version
    var uploader<?php echo $upid;?>  = $("#uploader<?php echo $upid;?>").plupload({
        // General settings
        runtimes : 'html5,html4',
        url : 'upload.php?frageid=2',
        rename : true,
        filters : {
            // Maximum file size
            max_file_size : '10mb',
            // Specify what files to browse for
            mime_types: [
                {title : "Image files", extensions : "jpg,gif,png"},
                {title : "Zip files", extensions : "zip"}
            ]
        },
        // Resize images on clientside if we can
        resize : {width : 320, height : 240, quality : 90},
        // Sort files
        sortable: true,
        views: {
            list: true,
            thumbs: true, // Show thumbs
            active: 'thumbs'
        }
    });

    // Handle the case when form was submitted before uploading has finished
    $('#form').submit(function(e) {
        // Files in queue upload them first
        if (uploader<?php echo $upid;?>.plupload('getFiles').length > 0) {
            // When all files are uploaded submit form
            uploader<?php echo $upid;?>.on('complete', function() {
                $('#form')[<?php echo $upid;?>].submit();
            });
            uploader<?php echo $upid;?>.plupload('start');
            return false; // Keep the form from submitting
        }
    });  
});
</script>
<?php
 }
?>
    <input type="submit" value="Send" />
</form>

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我没有使用Plupload,但是从文档来看,它似乎并不打算在表单中工作,而是单独执行上传逻辑。

创建上传器对象时会指定接收数据的url。在你的例子中它是

url : 'upload.php?frageid=2',

如果您想通过按钮触发文件上传,您只需创建一个独立按钮(白色表单),如下所示:

<button type="button" id="sendButton">[Button text]</button>

然后听取其点击事件

$('#sendButton').click(function(){
    uploader.plupload('start');
});

此代码段使用jQuery,因为您已在示例中使用它。

修改

正如我之前提到的,在用于创建上传器对象的数据中,您指定了url,因此您必须将其更改为您必须处理数据的路径。

url : 'dump.php',

在服务器端,您使用超级全局$_FILES来访问上传的文件,这是处理一个文件的简化示例。

<?php

if (empty($_FILES) || $_FILES["file"]["error"]) {
  die('{"OK": 0}');
}

$fileName = $_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/$fileName");

die('{"OK": 1}');
?>

此代码段取自Plupload的文档,其可用here,您应该检查一下。此外,它明确指出此代码不执行任何检查,因此您应该不使用此,而是在您自己创建时将其考虑在内。< / p>