2012-03-15 87 views
0

我遇到了uploadify問題。每當我在$ post_id中使用字符串時,uploadify只會在選擇3個文件上傳時上傳單個文件。 但是當我爲$ post_id指定一個不存在的值時,例如不存在$ _SESSION ['something']的會話變量。它將所有三個文件插入到數據庫中。我在想這可能是$ post_id的數據結構上的錯誤。php - 使用uploadify上傳文件

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']; 
+0

$ POST_ID是主鍵正確的,所以插入單獨領域的其餘部分沒有$ POST_ID – 2012-03-15 10:32:56

+0

沒有,帖子ID是外鍵。它是文件附加的帖子的ID。就像電子郵件和附件之間的關係一樣。 – 2012-03-15 10:41:53

+0

什麼是$ post_id?你是否通過uploadify函數調用了post_id – nithi 2012-03-15 10:43:35

回答

1

試試這個它應該如你預期

$tblQry = 'INSERT INTO tbl_files '; 
$tblQry .= 'SET   
     post_id     = "' .$_SESSION['post_id'] . '", 
     filename    = "' .$name2. '", 
     file_data    = "' .$data2.'", 
     mime_type_id   = "' .$mime2.'"'; 
    $db->query($tblQry); 
+0

不幸的是它仍然無法工作。這變得非常煩人,它應該已經工作。我的意思是爲什麼會在另一個php文件上訪問的會話不能在另一個會話上工作,這真的很奇怪。這可能是uploadify上的一個錯誤。 – 2012-03-15 12:46:22

+0

use session_start();在這個文件的頂部 – 2012-03-15 12:54:39

+0

感謝您的幫助,但它仍然無法正常工作。 – 2012-03-15 14:16:51

1

如果您正在使用的會話,請檢查您是否已經開始會話即在session_start()

如果你想從uploadify函數傳遞POST_ID到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> 

uploadify.php

if (!empty($_FILES)) { 
    $post_id = $_POST['myid']; 
    include_once "config.php"; 

    //use this when uploading images into a folder 
    $tempFile = $_FILES['Filedata']['tmp_name']; 

    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; 

    $fna = $_FILES['Filedata']['name']; 
    $targetFile = str_replace('//','/',$targetPath) . $fna; 
    move_uploaded_file($tempFile,$targetFile); 
    //folder upload end 

      $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'"); 

} 
+0

這可能會工作,但我只會知道我發佈到主表後發佈的價值。我將使用最後插入的id作爲值。如果我只能在調用uploadifyUpload()函數時發佈內容,這可能會有用,因爲這是唯一一次訪問我需要的值。 – 2012-03-15 11:19:12

0

就遇到了這個問題的工作。 Flash不使用在瀏覽器中設置的cookie,因此您需要將會話ID作爲post變量傳遞到Flash腳本中,然後在upload.php腳本中根據發佈的值設置cookie值。請參閱:

jQuery and Uploadify session in the php file