2016-09-17 138 views
1

我想將選定的圖像文件複製到另一個文件夾。圖像選擇過程是動態的。我使用下面的PHP代碼進行復制過程。未能打開流:沒有這樣的文件或目錄

//$cnt is count of selected images 

for($i=0;$i<$cnt;$i++) 
    { 
    $img = $sel['album_images']; //name of file to be copied 
       //read the file 
       $fp = fopen('uploads/members/album/'.$_SESSION['ses_userid'].'/'.$img, 'r') or die("Could not contact $img"); 
       $page_contents = ""; 
       while ($new_text = fread($fp, 100)) 
       {    
       $page_contents .= $new_text; 
       } 
       chdir("uploads/products/design/"); //This moves you from the current directory user to the images directory in the new user's directory 
       $newfile = "product-".strtotime('now').".png"; //name of your new file 
       //create new file and write what you read from old file into it 
       $fd = fopen($newfile, 'w'); 
       fwrite($fd, $page_contents); 
       fclose ($fd); 
} 

上面的代碼是完全運行,如果所選擇的圖像數爲1.but它產生錯誤,如果所選擇的圖像數大於1

Error is : 

Warning: fopen(uploads/members/album/72/full_e5829jellyfish.jpg) [function.fopen]: failed to open stream: No such file or directory in D:\wamp\www\myprint\photoprint_step2.php on line 51 
    Could not contact full_e5829jellyfish.jpg 

注意:如果所選擇的圖像數是2,則第一張圖像將被成功複製,下一張(第二張圖像)將產生錯誤。發生了什麼?

+0

的可能的複製[PHP - 未能打開流:沒有這樣的文件或目錄(http://stackoverflow.com/questions/36577020/php-failed-to-open-stream-no-such-file-or-directory) –

回答

1

我認爲你的for-cycle會導致錯誤,因爲你改變你的目錄一次(而不是改回它),在第二次和以後的迭代中,你不會。

我不會使用chdir函數,因爲代碼的清潔性和可讀性,最好使用完整路徑。

$newfile = "uploads/products/design/product-".strtotime('now').".png"; 

注意使用strtotime('now')作爲唯一indentificator圖像文件的的,因爲許多圖像可以在一秒鐘內被保存,並且可以成爲你的情況。這就是爲什麼你的圖像在第二次迭代中具有相同的名稱,它保存了第二張圖像的內容,但是替換了之前的圖像。

嘗試把一些隨機常數,就像這樣

$newfile = "uploads/products/design/product-".strtotime('now')."-".rand(1000,9999).".png"; 
+0

現在我檢查沒有chdir函數的代碼,錯誤不會發生。但是僅插入第二張圖片。第一張圖片未插入。我想插入我所選的所有圖像。 –

+0

因爲該目錄對於所有圖像都是相同的。所以只有我沒有改變我的目錄。 –

+0

因此,您的第一個錯誤已被清除,並且我在幾秒鐘前更新了我的答案,因此請嘗試檢查該錯誤,並在適當的幫助下采取適當的措施。 – pedrouan

相關問題