Загрузка картинки на сервер.(проблема с самой загрузкой)
а еще я видел на одном сайте такую фишку,к сожалению не могу дать ссылку,тк сайт с закрытой регистрацией....в общем там загрузка фото реализована следующим образом: подгружается аплет....и если с этим не было никаких проблем,то в окошке видны все папочки диски и тд...как будто просматриваешь обычным эксплорером в виндоусе. а файлы с картинками видны в миниатюре....рядом с тем что закачать можно поставить галочку....в общем так. Я так понял это сделано с помощью ActiveX? насколко сложно это делается?
Посмотри настройки PHP -
post_max_size и upload_max_filesize[/QUOTE]
upload_max_filesize = 2MB
post_max_size = 4MB
я пытаюсь загрузить картинку 1.6 МБ
попробовал добавить set_time_limit(); вроде бы не помогло
[QUOTE=mike]Посмотри настройки PHP -
upload_max_filesize = 2MB
post_max_size = 4MB
я пытаюсь загрузить картинку 1.6 МБ
попробовал добавить set_time_limit(); вроде бы не помогло
Попробуй увеличить upload_max_filesize до 4Mb и посмотри.
попробовал....без результатов. вот код....может что-то тут стоит изменить. зависает точно где-то тут,даже не где то,а после unlink. фаил удаляется,а дальше ничего не происходит(после сохранения нового файла должен еще один обработаться и он остается на диске,этот код я не включил).
Код:
function ResizeImg( $image, $newWidth, $newHeight)
{
$type = getimagesize($image);
switch($type[2])
{
case "1": $srcImage = ImageCreateFromGIF( $image ); break;
case "2": $srcImage = ImageCreateFromJPEG( $image ); break;
case "3": $srcImage = ImageCreateFromPNG( $image ); break;
default: $srcImage = ImageCreateFromGIF( $image ); break;
}
$srcWidth = ImageSX( $srcImage );
$srcHeight = ImageSY( $srcImage );
$ratioWidth = $srcWidth/$newWidth;
$ratioHeight = $srcHeight/$newHeight;
if( $ratioWidth < $ratioHeight)
{
$destWidth = $srcWidth/$ratioHeight;
$destHeight = $newHeight;
}
else
{
$destWidth = $newWidth;
$destHeight = $srcHeight/$ratioWidth;
}
$destImage = imagecreatetruecolor( $destWidth, $destHeight);
ImageCopyResized( $destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight );
switch($type[2])
{
case "1":ImageGif( $destImage ); break;
case "2":ImageJpeg( $destImage );break;
case "3":ImagePng( $destImage ); break;
default: ImageGif( $destImage ); break;
}
ImageDestroy( $srcImage );
ImageDestroy( $destImage );
}
//----------------------------------------------------------------//
if( isset( $_FILES['pic'] ) )
{
if( $profile['Pro_photo']!='' and $profile['Pro_photo']!='profile_foto/default.jpg' ) unlink($profile['Pro_photo']);
ob_start();
ResizeImg( $_FILES['pic']['tmp_name'], 250, 150 );
$resizedImage = ob_get_contents();
ob_clean();
$type=getimagesize( $_FILES['pic']['tmp_name'] );
$t=uniqid("1") ;
switch( $type[2] )
{
case "1": $file = $userName.$t.".gif"; break;
case "2":$file = $userName.$t.".jpg";break;
case "3":$file = $userName.$t.".png"; break;
default: $file = $userName.$t.".gif"; break;
}
$fp = fopen("profile_foto/$file", 'w');
fwrite($fp, $resizedImage);
fclose($fp);
}
{
$type = getimagesize($image);
switch($type[2])
{
case "1": $srcImage = ImageCreateFromGIF( $image ); break;
case "2": $srcImage = ImageCreateFromJPEG( $image ); break;
case "3": $srcImage = ImageCreateFromPNG( $image ); break;
default: $srcImage = ImageCreateFromGIF( $image ); break;
}
$srcWidth = ImageSX( $srcImage );
$srcHeight = ImageSY( $srcImage );
$ratioWidth = $srcWidth/$newWidth;
$ratioHeight = $srcHeight/$newHeight;
if( $ratioWidth < $ratioHeight)
{
$destWidth = $srcWidth/$ratioHeight;
$destHeight = $newHeight;
}
else
{
$destWidth = $newWidth;
$destHeight = $srcHeight/$ratioWidth;
}
$destImage = imagecreatetruecolor( $destWidth, $destHeight);
ImageCopyResized( $destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight );
switch($type[2])
{
case "1":ImageGif( $destImage ); break;
case "2":ImageJpeg( $destImage );break;
case "3":ImagePng( $destImage ); break;
default: ImageGif( $destImage ); break;
}
ImageDestroy( $srcImage );
ImageDestroy( $destImage );
}
//----------------------------------------------------------------//
if( isset( $_FILES['pic'] ) )
{
if( $profile['Pro_photo']!='' and $profile['Pro_photo']!='profile_foto/default.jpg' ) unlink($profile['Pro_photo']);
ob_start();
ResizeImg( $_FILES['pic']['tmp_name'], 250, 150 );
$resizedImage = ob_get_contents();
ob_clean();
$type=getimagesize( $_FILES['pic']['tmp_name'] );
$t=uniqid("1") ;
switch( $type[2] )
{
case "1": $file = $userName.$t.".gif"; break;
case "2":$file = $userName.$t.".jpg";break;
case "3":$file = $userName.$t.".png"; break;
default: $file = $userName.$t.".gif"; break;
}
$fp = fopen("profile_foto/$file", 'w');
fwrite($fp, $resizedImage);
fclose($fp);
}
У вас проблема не с загрузкой картинки, а с ее обработкой, сами подумайте вы загружаете, например, jpeg файл двухметрового размера, скрипт его должен распаковать, чтоб обработать. Я уже сталкивался с таким, например 2.5мб jpeg занимает 43мб, так что смотрите параметер memory_limit
точно,то что надо! все получилось!
спасибо,ребят,за помощь!
а как насчет второго вопроса? сложно ли написать такой аплет?
http://uploader.versalsoft.com/UploaderDemo/traditionalImageUploader.asp,собственно говоря это то, что мне нужно...хочу ее себе прикрутить. но она сделана с помощью ActiveX ....это получается,что вся эта красота работает только в IE? например,в моей опере эта штука не пашет. есть ли какие аналоги,чтобы работало хотя бы на самых популярных браузерах?
а еще....кто-нибудь работал с ImageMagick? я просто использую GD и чет не устраивает меня качество получаемых фото.
эмм....вот нашел такую штуку
а еще....кто-нибудь работал с ImageMagick? я просто использую GD и чет не устраивает меня качество получаемых фото.