2015-07-01 2 views
0

У меня есть сценарий загрузки файлов, и у меня есть оператор if, который проверяет, не существует ли файл, он создаст его и загрузит на него файл, и если он существует, он будет загрузите файл на него.Невозможно открыть это изображение, потому что у вас нет разрешения

<?php 
ini_set('post_max_size', '40M'); 
ini_set('upload_max_filesize', '40M'); 

if (isset($_POST['do']) and $_POST['do'] == 'upload') { 
    $filename = $_FILES['file']['name']; 
    $filesize = $_FILES['file']['size']; 
    $tmp_name = $_FILES['file']['tmp_name']; 
    $file_type = $_FILES['file']['type']; 
    $date = "[".date("d-m-Y_H-i")."]"; 
    $temp = explode(".", $filename); 
    $new_filename = $temp[0] . ""/*you can put any thing that you want before the [] in the 2 singels*/ . $date .'.' . end($temp); 
    $f_folder = "uploads" . DIRECTORY_SEPARATOR .$_POST['user'] . DIRECTORY_SEPARATOR . $new_filename; 
    $username = $_POST['user']; 

    //echo $username; 
    if (!file_exists("uploads". DIRECTORY_SEPARATOR .$_POST['user'])){ 
    mkdir("uploads" . DIRECTORY_SEPARATOR . $_POST['user'],0777); 
     if (empty($filename)) { 
      echo "choose file please"; 
    }else { 
      move_uploaded_file($tmp_name, $f_folder); 
      echo "file is uploaded in " . $f_folder; 
    } 
    }else if (empty($filename)) { 
      echo "choose file please"; 
     }else { 
      move_uploaded_file($tmp_name, $f_folder); 
      echo "file is uploaded in " . $f_folder; 
    }; 


}; 

echo "<hr>"; 
echo " 
<form method='post' enctype='multipart/form-data' > 
    File Path : <input type='file' name='file' /> 
    <br> 
    Username : <input type='text' name='user' /> 
    <br> 
    <input type='submit' name='do' value='upload' /> 
</form>"; 

?> 

Он работает правильно, но когда я загружаю фотографию, я не могу ее открыть. Это дает мне следующее сообщение об ошибке:

windows photo viewer can't open this picture because you don't have the correct permissions to access the file location

-i обновили код

+0

Ну, вы проверили разрешения? –

ответ

2

Используйте chmod() функцию РНР, чтобы установить разрешение после загрузки изображения.

<?php 
if (!file_exists("uploads". DIRECTORY_SEPARATOR .$_POST['user'])){ 
$oldmask = umask(0); 
mkdir("uploads" . DIRECTORY_SEPARATOR . $_POST['user'],777); 
umask($oldmask); 
    if (empty($filename)) { 
     echo "choose file please"; 
}else { 
     move_uploaded_file($tmp_name, $f_folder); 
     echo "file is uploaded in " . $f_folder; 
} 
}else if (empty($filename)) { 
     echo "choose file please"; 
    }else { 
     move_uploaded_file($tmp_name, $f_folder); 
     echo "file is uploaded in " . $f_folder; 
} 
chmod($f_folder, 777); // add this line after image upload 
+0

Вы имеете в виду что-то вроде этого? код: move_uploaded_file ($ tmp_name, $ f_folder); chmod ($ f_folder, 777); echo "файл загружен в". $ F_folder; (это не работает –

+0

no 'chmod ($ f_folder, 777);' напишите этот код после загрузки вашего изображения. Или вы можете использовать мой код как есть – Saty

+0

извините, я не могу понять, что вы можете дать мне окончательный код, пожалуйста ? –