我想用提交按钮发送所有文件。上传工作正常,但使用提交按钮的传输无法正常工作。当我发送表单时,文件被上传但传输不会转到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>
感谢您的帮助
答案 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>