2012-04-10 19 views
-1

我有一個應用程序here,用戶可以使用Mas的Ajax File Up-loader上傳文件。用戶必須先點擊「添加問題」按鈕來添加一行,然後才能使用文件上載器。我想知道的是,如何編碼以及在哪裏放置代碼,以便每次用戶爲每一行選擇一個文件,當用戶點擊「上傳」按鈕時,它會將文件位置插入從文本框到數據庫的那一行,但它只會這樣做,如果文件位置不在數據庫中,並且文件上傳成功了?如何在文件上載成功時插入值

我想插入'ImageFile'字段中的值和ImageId字段插入一個值時它應該添加字符串'IMG',然後字符串後面的下一個數字。例如,如果最後一個ImageId是'IMG3',那麼當插入一個值時,下一個ImageId應該是'IMG4',然後插入下一個值就意味着下一個ID是'IMG5'等。我已經連接了數據庫。

下面是PHP代碼其中包含插入值和查詢的代碼,我在那一刻:

if (isset($_POST['fileImage'])) { 

$_SESSION['fileImage'] = $_POST['fileImage']; 

} 

if (isset($_POST['submitImageBtn'])) { 


$imagequery = "SELECT ImageId, ImageFile FROM Image"; 

    $insertimage[] = "'". mysql_real_escape_string($_SESSION['fileImage']) ."'"; 


    $imagequery = "INSERT INTO Image (ImageId, ImageFile) 
    VALUES (" . implode('), (', $insertimage) . ")"; 


    mysql_query($imagequery); 

下面是它附加在文件上裝載每個錶行中,並在那裏上傳程序的代碼發生:(這是在JavaScript中,即使我知道插入值在PHP發生)

下面是PHP的頁面,它把文件上傳:

<?php 

    $destination_path = str_replace("//", "/", $_SERVER['DOCUMENT_ROOT']."/")."ImageFiles"; 

    $result = 0; 

    $target_path = $destination_path . basename($_FILES['fileImage']['name']); 

    if(@move_uploaded_file($_FILES['fileImage']['tmp_name'], $target_path)) { 
     $result = 1; 
    } 

    sleep(1); 
?> 

<script language="javascript" type="text/javascript">window.top.window.stopImageUpload(<?php echo $result; ?>);</script> 


<script type="text/javascript"> 
     var sourceForm; 

     function insertQuestion(form) { 

      var $tbody = $('#qandatbl > tbody'); 
      var $tr = $("<tr class='optionAndAnswer' align='center'></tr>"); 
      var $image = $("<td class='image'></td>"); 


      var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='startUpload(this);' class='imageuploadform' >" + 
      "<p class='imagef1_upload_process' align='center'>Loading...<br/><img src='Images/loader.gif' /><br/></p><p class='imagef1_upload_form' align='center'><br/><label>" + 
      "File: <input name='fileImage' type='file' class='fileImage' /></label><br/><label>" + 
      "(jpg, jpeg, pjpeg, gif, png, tif)</label><br/><br/><label>" + 
      "<input type='submit' name='submitBtn' class='sbtn' value='Upload' /></label>" + 
      "</p> <iframe class='upload_target' name='upload_target' src='#' style='wclassth:0;height:0;border:0px;solclass #fff;'></iframe></form>"); 

      $image.append($fileImage); 

      $tr.append($image); 
      $tbody.append($tr); 

     } 

     function startUpload(imageuploadform){ 
     $(imageuploadform).find('.imagef1_upload_process').css('visibility','visible'); 
     $(imageuploadform).find('.imagef1_upload_form').css('visibility','hidden'); 
     sourceForm = imageuploadform; 
      return true; 
    } 

     function stopUpload(success){ 
       var result = ''; 
       if (success == 1){ 
       result = '<span class="msg">The file was uploaded successfully!<\/span><br/><br/>'; 
       } 
       else { 
       result = '<span class="emsg">There was an error during file upload!<\/span><br/> <br/>' ; 
       } 
       $(sourceForm).find('.imagef1_upload_process').css('visibility','hidden'); 
       $(sourceForm).find('.imagef1_upload_form').html(result + '<label>File: <input name="fileImage" type="file"/><\/label><br/><label>(jpg, jpeg, pjpeg, gif, png, tif)</label><br/><br/><label><input type="submit" name="submitBtn" class="sbtn" value="Upload" /><\/label>'); 
       $(sourceForm).find('.imagef1_upload_form').css('visibility','visible');  
       return true; 
     } 
     </script> 
+0

哪裏是處理文件服務器端的腳本? INSERT會成功。例如,它可能出現在'if(move_uploaded_file($ _ FILES ['img'] ['tmp_name'],$ target))' – Kurt 2012-04-11 00:07:13

+0

我更新了代碼以包含服務器端腳本,對不起回合:) – user1324106 2012-04-11 00:25:43

回答

0

你可以把你的INSERT

if(@move_uploaded_file($_FILES['fileImage']['tmp_name'], $target_path)) { 
    $result = 1; 

    ... insert image details into database here ... 
} 

裏面我可以使用的圖片ID自動遞增ID和存儲的圖像的名稱的安全隨機字符串也建議。然後,您可以返回最後一個插入標識或-1的失敗(或包含這些和其他任何細節的XML/JSON對象)。

祝你好運

相關問題