2016-09-17 2 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

Смежные вопросы