Класс добавления картинки на сайт
Свернутый текст
<?php
/* Класс загрузки файлов на сервер */
class uploadFiles
{
public $extensions;
public $error;
public $size;
public $size_name;
public $src_img;
public $name;
public $i;
public function __construct($extensions, $upload_dir){
$this->extensions = $extensions;
$this->error = '';
$this->src_img = '';
$this->upload_dir = $upload_dir;
}
public function cycleFiles(){
$this->size = count($_FILES['userfile']['name']);
$this->size_name = $_FILES['userfile']['name'][0];
if(!empty($this->size_name))
for($this->i=0; $this->i < $this->size; $this->i++)
{
$this->name = time().'_'.translit($_FILES['userfile']['name'][$this->i]);
$this->error = $this->uploadHandle(1000, $this->extensions, $this->upload_dir, $this->i, $this->name);
$this->src_img .= $this->name.', ';
}
if(empty($this->error))
return $this->src_img;
else
echo $this->error;
return false;
}
public function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.',$i, $name)
{
$max_file_size *= 1024;
if ($_FILES['userfile']['error'][$i] === UPLOAD_ERR_OK)
{
// проверяем расширение файла
$file_extension = pathinfo($_FILES['userfile']['name'][$i], PATHINFO_EXTENSION);
if (in_array($file_extension, $valid_extensions))
{
// проверяем размер файла
if ($_FILES['userfile']['size'][$i] < $max_file_size)
{
$destination = $upload_dir .'/' . $name;
if (!move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $destination))
$this->error = 'Не удалось загрузить файл';
}
else
$this->error = 'Размер файла больше допустимого';
}
else
$this->error = 'У файла недопустимое расширение';
}
else
{
// массив ошибок
$error_values = array(
UPLOAD_ERR_INI_SIZE => 'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
UPLOAD_ERR_FORM_SIZE => 'Размер файла превышает указанное значение в MAX_FILE_SIZE',
UPLOAD_ERR_PARTIAL => 'Файл был загружен только частично',
UPLOAD_ERR_NO_FILE => 'Не был выбран файл для загрузки',
UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',
UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск'
);
$error_code = $_FILES['userfile']['error'][$i];
if (!empty($error_values[$error_code]))
$this->error = $error_values[$error_code];
else
$this->error = 'Случилось что-то непонятное';
}
return $this->error;
}
}
Спустя 4 часа, 13 минут, 58 секунд (10.02.2012 - 17:50) walerus написал(а):
Попробуй через меню ( на файле ) Общий доступ, сделать общий доступ для Всех...
Или Unlock'ером посмотри какой процесс держит файл.
Или же попробуй после загрузки файла, установить права
Или Unlock'ером посмотри какой процесс держит файл.
Или же попробуй после загрузки файла, установить права
chmod( $destination, 0777 );
Спустя 14 минут, 51 секунда (10.02.2012 - 18:04) nugle написал(а):
walerus
Так с изображением все норм, показывает 0666 права, сейчас анлокером попробую
устанавливаю права так
Но пишет, что права по прежнему 0666.
Анлокер ведь для удаления файлов или я не про тот, если не про тот кинь ссылку, пожалуйста!
Так с изображением все норм, показывает 0666 права, сейчас анлокером попробую
устанавливаю права так
$destination = $upload_dir .'/' . $name;
$result = move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $destination);
if (!$result)
$this->error = 'Не удалось загрузить файл';
chmod (SPH_ROOT.$destination, 0777);
echo substr(sprintf('%o', fileperms(SPH_ROOT.$destination)), -4);
Но пишет, что права по прежнему 0666.
Анлокер ведь для удаления файлов или я не про тот, если не про тот кинь ссылку, пожалуйста!
Спустя 38 минут, 34 секунды (10.02.2012 - 18:43) Игорь_Vasinsky написал(а):
анлокер покажет каким приложением занята картинка - если есть чё - разблокируй от всего.. но сдаётся мне дело не в этом.
В свойствах атрибуты какие стоят? под виндой или где тестишь?
В свойствах атрибуты какие стоят? под виндой или где тестишь?
Спустя 3 минуты, 41 секунда (10.02.2012 - 18:47) nugle написал(а):
Игорь_Vasinsky
I'm sorry, в свойствах чего?
Под виндой 7. Так уже она меня задрала) но времени нет перейти на другую ось. Было бы все ништяк, если бы я закинул все на хостинг, но пока тестирую, не хочу проверять с хостинга
I'm sorry, в свойствах чего?
Под виндой 7. Так уже она меня задрала) но времени нет перейти на другую ось. Было бы все ништяк, если бы я закинул все на хостинг, но пока тестирую, не хочу проверять с хостинга
Спустя 2 часа, 33 минуты, 10 секунд (10.02.2012 - 21:20) walerus написал(а):
Unlock, как скачаешь отпишись, потру с хостинга
И странно, если права стоят 0666, то ты их не сменил получается, попробуй сменить папку с куда записываешь файлы, на локале какой путь до скриптов ? Не c:\Program Files\... и так далее ?, если так, то вынеси в другую папку вообще, т.к. винда блокирует все что к програм филес
И странно, если права стоят 0666, то ты их не сменил получается, попробуй сменить папку с куда записываешь файлы, на локале какой путь до скриптов ? Не c:\Program Files\... и так далее ?, если так, то вынеси в другую папку вообще, т.к. винда блокирует все что к програм филес
Спустя 8 минут, 38 секунд (10.02.2012 - 21:29) nugle написал(а):
walerus
Цитата |
Unlock, как скачаешь отпишись, потру с хостинга |
Аммм... конечно, только дай докачаю
Проблема, что и в другую, которая рядом лежит, я тоже туда загружая и там такая же беда. Не, не в программ файл лежит
путь вот такого вида
C:/WebServers/home/fiesta-2000/www
Спустя 15 минут, 10 секунд (10.02.2012 - 21:44) walerus написал(а):
nugle - В общем, только что на 7ке скопировали фотку, все открывается без проблем. Попробуй без класса скопировать фотку, copy(); и погляди будут ли изменения.
Спустя 6 минут, 9 секунд (10.02.2012 - 21:50) nugle написал(а):
с помощью copy() все прекрасно копируется и все видно, а с помощью move_uploaded_file не хочет. Копировал также в классе, только функцию заменил
Спустя 9 минут, 21 секунда (10.02.2012 - 21:59) walerus написал(а):
Еще начитал, что у людей тоже были проблемы с move_uploaded_file, заменили на copy(); и unlink();
Спустя 5 минут, 40 секунд (10.02.2012 - 22:05) nugle написал(а):
walerus
http://phpforum.ru/txt/index.php/en/t44225.html
вот тут linker говорит, что лучше использовать move_uploaded_file
http://phpforum.ru/txt/index.php/en/t44225.html
вот тут linker говорит, что лучше использовать move_uploaded_file
Спустя 51 минута, 29 секунд (10.02.2012 - 22:56) walerus написал(а):
Цитата (nugle @ 10.02.2012 - 19:05) |
walerus http://phpforum.ru/txt/index.php/en/t44225.html вот тут linker говорит, что лучше использовать move_uploaded_file |
Та то понятно что оно проверяет на POST параметр )), попробуй права поставить не на файл, а на папку.
chmod (SPH_ROOT.$upload_dir, 0777);, вроде как америкосы посоветовали.