php-使用uploadify上传文件
我上传有问题。每当我在$post_id中使用字符串时,当我选择3个文件进行上载时,uploadify只上载一个文件。 但是当我为$post_id指定一个不存在的值时,比如一个不存在的会话变量$_session['something']。它将所有三个文件插入数据库。我认为这可能是$post_id的数据结构上的一个错误php-使用uploadify上传文件,php,jquery,file-upload,uploadify,Php,Jquery,File Upload,Uploadify,我上传有问题。每当我在$post_id中使用字符串时,当我选择3个文件进行上载时,uploadify只上载一个文件。 但是当我为$post_id指定一个不存在的值时,比如一个不存在的会话变量$_session['something']。它将所有三个文件插入数据库。我认为这可能是$post_id的数据结构上的一个错误 if(!empty($_FILES)){ $post_id = 'aa'; $name2 = mysql_real_escape_s
if(!empty($_FILES)){
$post_id = 'aa';
$name2 = mysql_real_escape_string($_FILES['Filedata']['name']);
$mime2 = mysql_real_escape_string($_FILES['Filedata']['type']);
$data2 = mysql_real_escape_string(file_get_contents($_FILES['Filedata']['tmp_name']));
$size2 = intval($_FILES['Filedata']['size']);
$db->query("INSERT INTO tbl_files SET post_id='$post_id', filename='$name2', file_data='$data2', mime_type_id='$mime2'");
}
我试图回显其余的数据,但它们似乎只存储普通字符串。所以$post_id字符串也应该起作用
echo $_FILES['Filedata']['name'];
如果您正在使用会话,请检查您是否已启动会话,即会话_start() 如果要将post_id从uploadify函数传递到php文件,可以使用scriptData,这在下面的函数中提到
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//uploadify function
$("#file_upload").uploadify({
'uploader': 'uploadify.swf',
'script': 'uploadify.php',
'cancelImg': 'cancel.png',
'folder': 'photos', //folder where images to be uploaded
'auto': false, // use for auto upload
'multi': true,
'queueSizeLimit': 6,
'buttonImg': 'images/upload.png',
'width': '106',
'height': '33',
'wmode': 'transparent',
'method': 'POST',
'scriptData': {'myid':post_id}, //you can post the id here
'onQueueFull': function(event, queueSizeLimit) {
alert("Please don't put anymore files in me! You can upload " + queueSizeLimit + " files at once");
return false;
},
'onComplete': function(event, ID, fileObj, response, data) {
$("#uploadfiles").append(response+",");
},
'onAllComplete': function(response, data) {
showAll();
}
});
</script>
试试这个,它应该能像你期望的那样工作
$tblQry = 'INSERT INTO tbl_files ';
$tblQry .= 'SET
post_id = "' .$_SESSION['post_id'] . '",
filename = "' .$name2. '",
file_data = "' .$data2.'",
mime_type_id = "' .$mime2.'"';
$db->query($tblQry);
刚刚遇到这个问题。Flash不使用浏览器中设置的cookie,因此您需要将会话id作为post变量传递到Flash脚本中,然后根据upload.php脚本中的post值设置cookie值。见:
$post\u id是主键,因此请单独插入其余字段而不是$post\u id号,post id是外键。它是附加文件的帖子的id。比如电子邮件和附件之间的关系。什么是$post_id?您是否从uploadify函数中获取post_id callpost id存储在会话变量I have session auto start in php.ini中。我是否需要将其传递给uploadify函数调用以访问它?我如何做?这可能会起作用,但我只知道在发布到主表后要发布的值。我将使用最后插入的id作为值。如果我只能在调用uploadifyUpload()函数时发布内容,这可能会起作用,因为这是我唯一可以访问所需值的时间。不幸的是,它仍然不起作用。这真的很烦人,它应该已经起作用了。我的意思是,为什么可以在另一个php文件上访问的会话不能在另一个php文件上工作,真的很奇怪。这可能是uploadify上的错误。请使用session_start();在这个文件的顶部
$tblQry = 'INSERT INTO tbl_files ';
$tblQry .= 'SET
post_id = "' .$_SESSION['post_id'] . '",
filename = "' .$name2. '",
file_data = "' .$data2.'",
mime_type_id = "' .$mime2.'"';
$db->query($tblQry);