2016-12-22 62 views
0

我有一個表單,用戶可以上傳多個圖像。我需要一種方法讓用戶在提交表單之前從他剛剛上傳的圖像中選擇一張圖像作爲他的主要圖片。如何讓用戶從剛剛上傳的多個圖像中選擇一個圖像而不刷新頁面?

我已經使用JavaScript文件閱讀器加載預覽。我試圖通過JavaScript爲圖像用戶選擇的名稱添加一個名稱,因此可以將它作爲PHP腳本中的後期元素進行訪問。但它不能工作,因爲它不能作爲文件訪問。在發佈這個問題之前,我已經花了整整3天的時間。這將是一個巨大的幫助,我可以告訴我如何解決這個問題。

下面的形式:

<input type="file" name="files[]" multiple="true" id="file"> 
<div class="list"></div> 

Javascript代碼加載預覽:

var imagesPreview = function(input, p) { 
    var id=1; 
    if (input.files) { 
     var filesAmount = input.files.length; 
     for (i = 0; i < filesAmount; i++) { 
      var reader = new FileReader(); 
      reader.onload = function(event) { 
       $($.parseHTML('<img class="thumb" id="'+id+'">')).attr('src', event.target.result).appendTo(p); 
       id++; 
      } 
      reader.readAsDataURL(input.files[i]); 
     } 
    } 
    }; 

PHP代碼上傳文件:

$total = count($_FILES['files']['name']); 
    // Loop through each file 
    for($i=0; $i<$total; $i++) { 
     //Get the temp file path 
     $tmpFilePath = $_FILES['files']['tmp_name'][$i]; 
     //Make sure we have a filepath 
     if ($tmpFilePath != ""){ 
     //Setup our new file path 
     $newFilePath = "gig_pics/" . $_FILES['files']['name'][$i]; 
     //Upload the file into the temp dir 
     move_uploaded_file($tmpFilePath, $newFilePath); 
     $file_sql = "INSERT INTO `gig_pics`(id,gig_id,pic) VALUES ('','$gid','$newFilePath')"; 
     $file_res = mysqli_query($conn,$file_sql); 
     } 
    } 

而且與jQuery添加名稱後,我嘗試訪問圖像作爲後

$main_img_path = $_POST['selectImage']; 
    $main_img_path = $_FILES['selectImage']; 

但我可以做任何事情。

+0

很難幫助沒有看到一些代碼。 ;) – Sam

+0

謝謝,我已經上傳了代碼。對不起,我認爲代碼可能太多了。 –

+0

謝謝,我已經在下面給出了一個可能的答案。 – Sam

回答

0

我認爲你的問題在於你是從文件列表中選擇特定文件的方式:

$main_img_path = $_FILES['selectImage']; 

我已經有一段時間沒有使用PHP,但在我看來,如果你已經循環通過服務器上的文件,爲什麼不在循環時檢查主圖像?像這樣的東西(假設$ _ POST [「selectImage」]包含所選圖像的臨時文件名):

$total = count($_FILES['files']['name']); 
// Loop through each file 
for($i=0; $i<$total; $i++) { 
    //Get the temp file path 
    $tmpFilePath = $_FILES['files']['tmp_name'][$i]; 
    //Make sure we have a filepath 
    if ($tmpFilePath != ""){ 

    if ($tmpFilePath === $_POST['selectImage']) { 
     // This is the selected image 
    } 
    //Setup our new file path 
    $newFilePath = "gig_pics/" . $_FILES['files']['name'][$i]; 
    //Upload the file into the temp dir 
    move_uploaded_file($tmpFilePath, $newFilePath); 
    $file_sql = "INSERT INTO `gig_pics`(id,gig_id,pic) VALUES ('','$gid','$newFilePath')"; 
    $file_res = mysqli_query($conn,$file_sql); 
    } 
} 

就像我說的,這要看是什麼$ _ POST [「selectImage」]包含爲我不知道你在那裏存儲什麼。

相關問題