有我的代码:
$('#file_upload').uploadify({
'swf' : 'uploadify.swf',
'uploader' : 'uploadify.php',
'onSelect' : function(file) {
$('#start').removeClass('hidden');
},
'method' : 'post',
'formData' : {
'to': $('input#to').val(),
'from': $('input#from').val(),
'subject': $('input#subject').val()
},
'onQueueComplete' : function(queueData) {
window.location.replace("index.php?success=uploaded");
},
'onUploadSuccess' : function(file, data, response) {
alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
}
// Your options here
});
你可以看到我通过POST方法发送了三个参数TO,FROM,SUBJECT。
有服务器脚本
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
if (move_uploaded_file($tempFile, $targetFile)) {
echo $_REQUEST['subject'];
} else {
echo "Something wrong";
}
}
和echo $ _REQUEST ['subject'];没有回报 我的错误在哪里?
如果我更改例如'subject':$('input#subject')。val()to' subject':'test subject'它的工作原理。但我需要从输入中发送值。我怎么能这样做?
很多
答案 0 :(得分:4)
首次实例化Uploadify时,而不是在提交上传时设置formData。如果你这样做,你将把formData设置为加载页面时这些字段的值。
相反,使用onUploadStart选项在文件上传之前设置formData ...
$('#file_upload').uploadify({
'swf' : 'uploadify.swf',
'uploader' : 'uploadify.php',
'onSelect' : function(file) {
$('#start').removeClass('hidden');
},
'method' : 'post',
'onQueueComplete' : function(queueData) {
window.location.replace("index.php?success=uploaded");
},
'onUploadStart' : function(file) {
$('#file_upload').uploadify('settings','formData',{
'to': $('input#to').val(),
'from': $('input#from').val(),
'subject': $('input#subject').val()
});
}
'onUploadSuccess' : function(file, data, response) {
alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
}
// Your options here
});
答案 1 :(得分:2)
Uploadify有点棘手。 我们感兴趣的活动是“onUploadStart”。 这应该实际上命名为“onBeforeUploadStart”,因为它确实在发送POST数据之前被触发。 因此,它是更新formData的最佳位置(这是Uploadify发送的唯一数据 - 它实际上并不关心您在其他地方输入的内容)。
所以,我喜欢在没有任何选项的情况下初始化Uploadify。在发送(==“onUploadStart”)之前,我更新了表单数据。
我的代码为POST数据添加了一个键控元素并分配了它的值。
var ts = '<?php $t = time(); echo $t; ?>';
var hs = '<?php echo md5($t . $fileupload_securityhash); ?>';
$("#fileUploadInput").uploadify({
'formData' : {},
'onUploadStart' : function(file) {
uploadify_update_formdata();
}
});
function uploadify_update_formdata(){
$("#fileUploadInput").uploadify('settings','formData', {
'token' : hs,
'ts' : ts,
'gallery[title]' : $('input[name="gallery[title]"]').val()
});
}
在服务器端: 所有Uploadify-Form-Data都在$ _POST。
中发送重要的: uploadify表单数据不会在send上查找变量值。 意思是,如果你有类似的东西:
'formData' : { 'myInputVal' : $(input[name=myInput]).val() }
这将不会在发送上更新。 所有变量都设置为上传的ON INIT,然后永远不会更改,除非您设置$ .uploadify.settings。
我还想为输入设置一个事件监听器,以确保:
$('form input').on('change', function(){
uploadify_update_formdata()
});
希望这有帮助。
答案 2 :(得分:0)
如果您的输入被称为“#to”,那么在jquery选择器中只需使用“#to”而不是“input#to”。应该这样做。 :)