[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема загрузки файло на сервер
AlexanderShad
Доброго времени суток.

У мну есть проблемка...

Вот этим


if(copy($HTTP_POST_FILES['f_add']['tmp_name'], $t))


Я загружаю файлы на сервер...

Ну так вот, работает на Opera, Mozilla FireFox, Safari, Google Chrome, а вот на IE не работает... проверял с версии 6 по 8

ХТМЛ

<form enctype='multipart/form-data' action='' method='post'>
<input
name=f_add type='file'>


Подскажите пожалуйста, что делать? huh.gif



Спустя 1 минута, 50 секунд (8.10.2010 - 11:28) linker написал(а):
<input type="hidden" name="MAX_FILE_SIZE" value="тут значение">

Спустя 10 минут, 57 секунд (8.10.2010 - 11:38) AlexanderShad написал(а):
Цитата (linker @ 8.10.2010 - 08:28)
<input type="hidden" name="MAX_FILE_SIZE" value="тут значение">

не работает

<form enctype='multipart/form-data' action='' method='post'>
<input
type='hidden' name='MAX_FILE_SIZE' value='400000'>
<input
name=f_add type='file'>
<input
type='submit' name='submit1' value='Добавить' class='btn'>


value='400000' я так понял максимальный размер файла..
хотя мне надо 307200 (300 кб)
но на всякий случай поставил 400000

Спустя 2 минуты, 24 секунды (8.10.2010 - 11:41) waldicom написал(а):
Это поле не проверяет ни один широко распростарненный браузер.
Вместо copy() использовать move_uploaded_file()
И наконец: что конкретно не работает?

Спустя 22 минуты, 43 секунды (8.10.2010 - 12:04) silius написал(а):
Цитата (AlexanderShad @ 8.10.2010 - 08:26)

if(copy($HTTP_POST_FILES['f_add']['tmp_name'], $t))



Используй лучше

$_FILES['f_add']['tmp_name']


Там где ты это взял, немного выше в замечании написано почему wink.gif

Спустя 1 минута, 57 секунд (8.10.2010 - 12:06) AlexanderShad написал(а):
Не работает и с move_uploaded_file()

ммм...
выкладываю кусок


if (($_GET['foto']=='add')&&($_GET['user']==$id_u))
{
if (isset($HTTP_POST_FILES['f_add']))
{
if (is_uploaded_file($HTTP_POST_FILES['f_add']['tmp_name']))
{
if ($HTTP_POST_FILES['f_add']['size']<=307200)
{
if(
(
$HTTP_POST_FILES['f_add']['type']=="image/gif") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/jpeg") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/jpg") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/png"))
{
$rn = rand(0,1000);
include $_SERVER['DOCUMENT_ROOT']."/modul.php";
$t ="./pics/temp".$id_u."_".convert_name($HTTP_POST_FILES['f_add']['name']);
$t0 =convert_name($HTTP_POST_FILES['f_add']['name']);
if(copy($HTTP_POST_FILES['f_add']['tmp_name'], $t))
{
$t_ ="./pics/pics".$rn.$id_u."_".$t0;
$imgsize = getimagesize($t);

//--- ну и так далее




<form enctype='multipart/form-data' action='./editfoto.php?foto=add&user=".$_GET['user']."' method='post'>
Добавить фото в альбом <select name=\"vibrf\">
<option value='0'>Нет альбома</option>"
;
//--- кусок кода
echo "<option value=".$row['id'].">".$row['mnazvanie']."</option>";
//--- кусок кода
echo "</select>
<input name=f_add type='file'>
<input type='submit' name='submit1' value='Добавить фото' class='btn'></form>"
;


Спустя 1 минута, 28 секунд (8.10.2010 - 12:07) AlexanderShad написал(а):
Цитата (silius @ 8.10.2010 - 09:04)
Цитата (AlexanderShad @ 8.10.2010 - 08:26)

            if(copy($HTTP_POST_FILES['f_add']['tmp_name'], $t))



Используй лучше

$_FILES['f_add']['tmp_name']


Там где ты это взял, немного выше в замечании написано почему wink.gif

Я много где читал если честно biggrin.gif
Всего и не упомнишь )))

Спустя 2 минуты, 33 секунды (8.10.2010 - 12:10) silius написал(а):
biggrin.gif я просто думал, что взял от сюда.

Всё дело в том, что с файлами, как ты хочешь работает массив $_FILES, он специально предназначен для этого.

а лучше использовать эту функцию для загрузки файлов:

move_uploaded_file()

Спустя 5 минут, 11 секунд (8.10.2010 - 12:15) linker написал(а):
Цитата
Ну так вот, работает на Opera, Mozilla FireFox, Safari, Google Chrome, а вот на IE не работает... проверял с версии 6 по 8
Может стоит задуматься над этим, прежде чем предлагать какие-то версии?

Спустя 3 минуты, 40 секунд (8.10.2010 - 12:18) AlexanderShad написал(а):
Цитата (silius @ 8.10.2010 - 09:10)
biggrin.gif  я просто думал, что взял от сюда.

Всё дело в том, что с файлами, как ты хочешь работает массив $_FILES, он специально предназначен для этого.

а лучше использовать эту функцию для загрузки файлов:

move_uploaded_file()

Я читал про $_FILES

Но так самое интересное, знаете в чем...
что допустим аватарка у меня грузится в IE

т.е. ниже работает

if (isset($HTTP_POST_FILES['r_avatar']))
{
if (is_uploaded_file($HTTP_POST_FILES['r_avatar']['tmp_name']))
{

$imgsize = getimagesize($HTTP_POST_FILES['r_avatar']['tmp_name']);
if (($imgsize[0] <= 100) && ($imgsize[1] <= 100))
//if ($HTTP_POST_FILES['r_avatar']['size']<=40960)
{
if(($HTTP_POST_FILES['r_avatar']['type']=="image/gif") ||
(
$HTTP_POST_FILES['r_avatar']['type']=="image/pjpeg") ||
(
$HTTP_POST_FILES['r_avatar']['type']=="image/jpeg") ||
(
$HTTP_POST_FILES['r_avatar']['type']=="image/jpg") ||
(
$HTTP_POST_FILES['r_avatar']['type']=="image/jpg") ||
(
$HTTP_POST_FILES['r_avatar']['type']=="image/bmp") ||
(
$HTTP_POST_FILES['r_avatar']['type']=="image/JPEG") ||
(
$HTTP_POST_FILES['r_avatar']['type']=="image/png"))
{
include $_SERVER['DOCUMENT_ROOT']."/modul.php";
$t_m = convert_name($HTTP_POST_FILES['r_avatar']['name']);
if(copy($HTTP_POST_FILES['r_avatar']['tmp_name'], "./avatar/avatar".$id_u."_".$t_m))
{
///--- и т.д.



<form enctype='multipart/form-data' action='./editprofil.php?action=go' method='post'>
//-- и тд
<input name=r_avatar type='file'>


И тут нету MAX_FILE_SIZE

Спустя 2 минуты, 9 секунд (8.10.2010 - 12:21) AlexanderShad написал(а):
Цитата (linker @ 8.10.2010 - 09:15)
Цитата
Ну так вот, работает на Opera, Mozilla FireFox, Safari, Google Chrome, а вот на IE не работает... проверял с версии 6 по 8
Может стоит задуматься над этим, прежде чем предлагать какие-то версии?

Если честно, то Вас не понял
...
кажись понял

Спустя 38 минут, 36 секунд (8.10.2010 - 12:59) AlexanderShad написал(а):
Кстати на IE не только у меня не грузится.. я уже знаю про 4-е случая.. не считая еще мой работы)

Спустя 3 минуты, 22 секунды (8.10.2010 - 13:03) linker написал(а):
Как вариант попробуй так
<form enctype="multipart/form-data" action="editfoto.php" method="post">
<
input type="hidden" name="foto" value="add">
<
input type="hidden" name="user" value="' . $_GET['user'] . '">
...

Спустя 42 минуты (8.10.2010 - 13:45) AlexanderShad написал(а):
хорошо, спасибо. Попробую.
Потом отпишусь

Спустя 1 день, 15 часов, 38 минут, 14 секунд (10.10.2010 - 05:23) AlexanderShad написал(а):
Доброго времени суток всем.

Методом научного тыка, выяснил, что IE не отрабатывает

if(
(
$HTTP_POST_FILES['f_add']['type']=="image/gif") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/jpeg") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/jpg") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/png"))
{


Т.е. не выполняется это условие...
и скрипт просто пропускает все нужные действия.. до загрузки даже не доходит

Что делать? rolleyes.gif

Спустя 4 часа, 3 минуты, 57 секунд (10.10.2010 - 09:27) linker написал(а):
Как вариант - GD.

Спустя 12 минут, 24 секунды (10.10.2010 - 09:39) Michael написал(а):
Функцией getimagesize() проверяй картинки ли это. Она не требует GD, хотя, в общем то, GD стоит наверное почти везде на хостингах.

Спустя 5 часов, 42 минуты, 14 секунд (10.10.2010 - 15:21) AlexanderShad написал(а):
Я нашел решение ))
оказывается IE просто некоректно передавал тип файла...
о так прально biggrin.gif


($HTTP_POST_FILES['f_add']['type']=="image/gif") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/pjpeg") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/jpeg") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/jpg") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/png") ||
(
$HTTP_POST_FILES['f_add']['type']=="image/x-png"))

Спустя 45 секунд (10.10.2010 - 15:22) AlexanderShad написал(а):
Сейчас у меня все работает.

Всем большое спасибо smile.gif

Спустя 10 дней, 7 часов, 49 минут, 10 секунд (20.10.2010 - 23:11) jimmlove.ru написал(а):
А зачем так много писать то? Для проверки типа файла можно заранее определить файл. И заключить в масив например $fidname=$_FILES['r_avatar']['name'];

а потом

if (ereg("\.PNG$",$fidname) || ereg("\.png$",$fidname) || ereg("\.jpg$",$fidname) || ereg("\.jpeg$",$fidname) || ereg("\.gif$",$fidname) ||ereg("\.GIF$",$fidname) || ereg("\.JPG$",$fidname) || ereg("\.JPEG$",$fidname)){echo'Добавляем картинку';}else{echo' не тот тип файла';}

и при добавлении файла на сервер лучше использовать не

copy()

а

move_uploaded_file()

если я правильно понял проблему.









Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.