move_uploaded_file (): невозможно переместить

$targetFolder = '/LP/media/image'; // Relative to the root

if (!empty($_FILES)) {
$tmpName = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
//$ext = end(explode('.', $_FILES['Filedata']['name']));
$targetFile = rtrim($targetPath, '/') . '/' . $_FILES['Filedata']['name'];

// Validate the file type
echo $targetFile;
$fileParts = pathinfo($_FILES['Filedata']['name']);
$fileTypes = array('jpg', 'jpeg', 'png','JPG','JPEG','PNG'); // File extensions
if (in_array($fileParts['extension'], $fileTypes)) {
move_uploaded_file($tmpName, $targetFile);
//echo '1'.$fileParts['filename'];
// echo $fileParts['filename'];

$aimage = file_get_contents($tmpName);

// echo '<img src="data:image/jpeg;base64,' . base64_encode($aimage) . '" width=\'100\' height=\'100\' />';
} else {
echo 'Invalid file type.';
}
}
?>

Тот же код работает на моей локальной машине, но развернут на удаленном сервере. Тогда получаю ошибку ниже.

/home/username/public_html/LP/media/image/default_avatar.png
Предупреждение: move_uploaded_file (/home/username/public_html/LP/media/image/default_avatar.png): не удалось открыть поток: нет такого файла или каталога в /home/username/public_html/uploadify/gallery.php онлайн 28

Предупреждение: move_uploaded_file (): невозможно переместить / tmp / phpoe0fBd в /home/username/public_html/LP/media/image/default_avatar.png в /home/username/public_html/uploadify/gallery.php онлайн 28

0

Решение

Код, который вы предоставляете, не очень ясен, чтобы сообщить источник проблемы, поэтому я предоставлю вам полный фрагмент, где вы можете сделать более правильные выводы.

В этом случае я отправил массив из JavaScript в мой PHP-файл, используя данные формы под названием «документы». Я также изменяю имя файла так, чтобы оно стало: «filename_optional_ $ i (int)».

for($i=0; $i<count($_FILES['documents']['name']); $i++){
list($dump, $extention) = explode(".", (string)$_FILES['documents']['name'][$i]);
$document_name = $file_name.'_optionnel'.$i;
if(($_FILES['documents']['size'][$i] < 500000)){
if ($_FILES['documents']["error"][$i] > 0){
echo 'Erreur.';
}else{
if(file_exists( $directory_path . $document_name . "." . $extention)) {
echo 'Le fichier existe déjà.';
}else{
$sourcePath = $_FILES['documents']['tmp_name'][$i];
$targetPath = $directory_path . $file_name ."/". $document_name . "." . $extention;
array_push($attachments, $targetPath);
move_uploaded_file($sourcePath, $targetPath);
}
}
}else{
echo 'Le fichier est trop grand.';
}
}

Убедитесь, что ваши переменные пути указывают на правильную папку. Скажем, например, если вы хотите, чтобы ваш файл перешел к изображениям папок, вы должны сделать:

path_to_folder / изображения / и не path_to_folder / изображения

РЕДАКТИРОВАТЬ:

Вот как должны выглядеть переменные вашего имени файла и пути к каталогу:

/*$nom, $prenom and $user_id come from database values*/
$file_name = $nom."_".$prenom."_".$user_id;

$directory_path = dirname( __FILE__ ) . '/user_docs/';

/* Create mask */
$oldmask = umask(0);

/* Create the folder for user */
$directory = mkdir($directory_path.$file_name, 0777);

/* redo the mask */
umask($oldmask);

Я довольно новичок в этом сайте, но самое меньшее, что я могу сделать для вас, — предложить вам этот код, который я сделал, чтобы помочь вам. Я написал несколько комментариев, чтобы помочь вам через.

Полный исходный код для загрузки

0

Другие решения

У меня есть эта маленькая функция (не самая лучшая), но она «работает» в моем случае, загруженные файлы должны быть перемещены, или они будут удалены, поэтому я перемещаю их в папку рядом с моим PHP-файлом и отображаю ссылку на него (вы можете они перемещают это куда-либо еще, переименовывают это или как угодно:

function save_file() {
$gs_name = $_FILES['uploaded_files']['tmp_name'];
if(is_readable($gs_name) && $_FILES['uploaded_files']['error'] == 0) { //Tells whether a file exists and is readable. no error during upload (0)
move_uploaded_file($gs_name, 'upload/'.$_FILES['uploaded_files']['name']);

echo "saved.<a href='upload/".$_FILES['uploaded_files']['name']."' target='_blank'/>".$_FILES['uploaded_files']['name']."</a><br/>";
echo "<p><a href='upload/' target='_self'>Uploaded files.</a></p>";
echo "<p><a href='upload_file.php' target='_self'>Continue...</a></p>";
}
}

Важной частью этого является то, что:

if(is_readable($gs_name) && $_FILES['uploaded_files']['error'] == 0)

это позволяет ему проверить, можно ли скопировать файл, и если не было ошибок, которые могли бы привести к повреждению файла … Я указываю на это, потому что путь, кажется, в порядке, другие уже упоминают разрешения для файлов и папок.

0

Попробуйте следующий код. Должно быть легко идентифицировать ошибку:

<?php

$upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/LP/media/image';

if (isset($_FILES['Filedata'])) {

$file = $_FILES['Filedata'];

if ($file['error'] !== UPLOAD_ERR_OK) {
echo 'error: ', $file['error'], PHP_EOL;
exit;
}

$allowed = array('jpg', 'jpeg', 'png');
$extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
if (!in_array($extension, $allowed)) {
echo 'error: invalid file extension', PHP_EOL;
exit;
}

$target = $upload_dir . '/' . basename($file['name']);
if (!move_uploaded_file($file['tmp_name'], $target)) {
echo 'error: move_uploaded_file failed', PHP_EOL;
print_r(error_get_last());
exit;
}

echo 'success', PHP_EOL;
echo $target, PHP_EOL;
}
0
По вопросам рекламы [email protected]