2016-01-20 131 views
2

現在我正在執行圖片上傳操作,方法是將圖片拖到字段上,然後成功將其上傳到目的地。現在我需要將多個文件夾上的相同圖像上傳到該字段,圖像應該插入多個文件夾。當我嘗試上傳多個文件夾中的相同圖像時,問題就出現了,圖像被插入到第一個文件夾而不是其他文件夾中。我附上了下面的代碼。拖放圖片並將其上傳到多個文件夾

function uploadimage() { 
    $headerimage=array(); 
    if (!empty($_FILES)) { 
     $headerimage[0] = 'uploadimages/post_ads'."/".$_FILES['file']['name']; 
     echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[0]); 
     $headerimage[1] = 'uploadimages/latestimages'."/".$_FILES['file']['name']; 
     echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[1]); 
     $headerimage[2] = 'uploadimages/listimages'."/".$_FILES['file']['name']; 
     echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[2]); 
     $headerimage[3] = 'uploadimages/photoimages'."/".$_FILES['file']['name']; 
     //$headerpath = 'uploadimages/photoimages'."/".$_FILES['file']['name']; 
     echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[3]); 
     $headerimage[4] = 'uploadimages/slideimages'."/".$_FILES['file']['name']; 
     //$headerpath = 'uploadimages/slideimages'."/".$_FILES['file']['name']; 
     echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[4]); 
     print_r($headerimage); 
     $_SESSION['upload_images'][]=$headerimage; 
    } 
} 

post_ads文件夾中的圖像被插入,但在其它文件夾不是。你們中的任何人可以向我推薦一個可能的解

回答

1

move_uploaded_file將移動文件,而不是複製它 - 這意味着它只能工作一次。

如果您使用的是複製,則您可以複製的次數不應有任何限制:上載創建的臨時文件只會在腳本執行結束時被銷燬(除非當然你之前移動/刪除它)

不過,也許一個解決方案是先使用move_uploaded_file,然後複製? 有點像,我想:

if (move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[1])) { 
    copy($headerimage[1], $headerimage[2]); 
    copy($headerimage[1], $headerimage[3]); 
    copy($headerimage[1], $headerimage[4]); 
} 
0

有一些很好的php庫來處理上傳。我正在使用http://www.verot.net/php_class_upload.htm它簡化了你的工作。你可以將文件上傳到多個文件夾,然後想:

include('class.upload.php'); 
//-------------------------------------- 
$upload_handler = new Upload($_FILES['file']); 
if ($upload_handler->uploaded) 
{ 
$new name = time().rand(10000,99999); 
//---------------------------------------- 
$upload_handler->image_convert = 'jpg'; 
$upload_handler->jpeg_quality = 70; 
$upload_handler->image_background_color = '#FFFFFF'; 
$upload_handler->image_resize = true; 
$upload_handler->file_new_name_body = $new name; 
$upload_handler->image_ratio_fill = true; 
$upload_handler->image_ratio_no_zoom_in = true; 
$upload_handler->image_x = 900; 
$upload_handler->image_y = 700; 
$upload_handler->Process('folder_path_1'); 
//----------------------------------------- 
$upload_handler->image_convert = 'jpg'; 
$upload_handler->jpeg_quality = 70; 
$upload_handler->image_background_color = '#FFFFFF'; 
$upload_handler->image_resize = true; 
$upload_handler->file_new_name_body = $new name; 
$upload_handler->image_ratio_fill = true; 
$upload_handler->image_ratio_no_zoom_in = true; 
$upload_handler->image_x = 150; 
$upload_handler->image_y = 150; 
$upload_handler->Process('folder_path_2'); 
//-----------------------------------------  

} 

所以,你可以調整大小,重採樣等,然後調用進程的不同的文件夾,你想要多少倍。

0

謝謝你的建議傢伙。我已經找到了它的確切和簡單的方法。我已附上以下代碼

function uploadimage() 

{ 

if (!empty($_FILES)) { 



     $headerimage= 'uploadimages/featuredimages'."/".$_FILES['file']['name']; 
     $headerimage1= 'uploadimages/latestimages'."/".$_FILES['file']['name']; 
     $headerimage2 = 'uploadimages/listimages'."/".$_FILES['file']['name']; 
     $headerimage3 = 'uploadimages/photoimages'."/".$_FILES['file']['name']; 
     $headerimage4 = 'uploadimages/slideimages'."/".$_FILES['file']['name']; 
     $headerimage5 = 'uploadimages/galleryimages'."/".$_FILES['file']['name']; 


      move_uploaded_file($_FILES['file']['tmp_name'],$headerimage); 
      copy($headerimage, $headerimage1); 
      copy($headerimage1, $headerimage2); 
      copy($headerimage1, $headerimage3); 
      copy($headerimage1,$headerimage4); 
      copy($headerimage1,$headerimage5); 



    $_SESSION['upload_images'][]=$headerimage1; 

} 
}