Загрузка файла с машины

Aknichy

Новичок
Загрузка файла с машины

Возможно подобная тема уже была, но... перерыв все что можно , не нашла ответа на свой вопрос. :(

Не могу закачать файл на сервер с локальной машины.
Пример из хелпа по PHP:


/************************/
PHP:
<form enctype="multipart/form-data" action="add_file.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
выбрать файл: <input name="userfile" type="file">
<input type="submit" value="Закачать">
</form>

<?
$uploaddir = '/images/';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
    print "Закачался\n";
    print_r($_FILES);
} else {
    print "Не закачался\n";
    print_r($_FILES);
}
?>
/************************/
папка images существует, cmod на нее выставлен 777 и на саму папку в которй находиться скрипт (test) тоже выставлен. (images находится в test)

в результате эксперементов было установлено, что, если использовать вместо move_uploaded_file() функцию copy() и $userfile забирать как $HTTP_POST_VARS['userfile'], то файлы с инета и с сервера на сервер (из одной папки в другую на серваке, например) будут качаться нормально. Но с пользовательской машины, как бы я не пыталась, залить файл не могу:

Warning: move_uploaded_file(/images/72.jpg): failed to open stream: No such file or directory in /users/r/e/restorans.info/html/www/test/add_file.php on line 16
и
Warning: copy(/images/72.jpg): failed to open stream: No such file or directory in /users/r/e/restorans.info/html/www/test/add_file.php on line 20
 

Aknichy

Новичок
http://phpfaq.ru/upload

прочитала... - все тоже самое, права, настройки - все проверила - все подключенно и выставленно :\
использовала пример, который там дан (естессно с внесенными поправками на путь загрузки) - то же самое.


$_SERVER['DOCUMENT_ROOT']."/images/ "?

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

самое странное, что если не с машины пытаться загрузить - то работает (правда не тем скриптом, который указан выше, но аналогичный)

-~{}~ 17.06.04 16:42:

причем что на локале, что в инетном - значит, все-так в скрипте дело
 

Aknichy

Новичок
$_FILES[userfile][tmp_name] => /users/r/e/restorans.info/tmp/phpg9mkDx
в переменную прописался, но проверить на самом деле он есть в темпе или нет - не могу (в tmp папке его не нахожу) и копирование из нее тоже не выходит
 

alpine

Новичок
PHP:
<?php
$uploaddir = ' /users/r/e/restorans.info/html/www/test/images'; // нипиши так
?>
если нет, покажи варнинги еще раз ...
 

yaniks

новичок
исходя из ошибки, copy(/images/72.jpg): failed to open stream

а слеш в начале пути означает что папку images он ищет вне папки test, а рядом т.е папке www
и если бы вы использовали полный путь
/users/r/e/restorans.info/html/www/test/images/72.jpg то ошибки бы небыло
 

Aknichy

Новичок
вообщем, почему там не работало, я так и не разобралась, но точно работает вот так:
<?
if (isset($GLOBALS["fileup"]) and $GLOBALS["fileup"] != ""){
$tmp_fn = $GLOBALS["fileup_name"];
$tmp_target_filename = $target_filename = $tmp_fn;
if (file_exists($tmp_target_filename)) echo "<br>Файл с именем $tmp_fn существует.";
else{
$target_filename = $tmp_target_filename;
if (copy($GLOBALS["fileup"], $target_filename)){
echo "<br>Файл $tmp_fn загружен.";
if ($fmg_FILE_MODE != 0)
if (@chmod($target_filename,$fmg_FILE_MODE) == false)
echo "<br> Нет прав на запись";
}
else
echo "<br>Ошибка при загрузке.<br> Файл '" . $tmp_fn . "' не загружен.";
};
};

echo "<form enctype='multipart/form-data' method=post action='". htmlentities($PHP_SELF) ."'>";
echo "<br><table border=1>";
echo "<tr>";
echo "<td align='center'>";
echo "<input type='file' name='fileup' size='50'>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td align='center'>";
echo "<input type='submit' name='Submit' value='Загрузить'>";
echo "</td>";
echo "</tr>";
print "</table>";
?>
 

lucas

Guest
echo "<br><table border=1>";
echo "<tr>";
echo "<td align='center'>";
echo "<input type='file' name='fileup' size='50'>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td align='center'>";
echo "<input type='submit' name='Submit' value='Загрузить'>";
echo "</td>";
echo "</tr>";
print "</table>";
Не надо так выводить HTML.
Надо -- вот так:

?>
<td align='center'>
<input type='submit' name='Submit' value='Загрузить'>
</td>
<?php
 

Novar

Guest
Поиском воспользуйся, тут уже не раз рассуждали на тему вырезания HTML из самого php.
 

Demiurg

Guest
>на что это влияет?
на читаемость кода и удобство изменения.

Novar
интересно, по какому ключевому слову(словам) надо искать ?
 

Aknichy

Новичок
.
на читаемость кода и удобство изменения.
:)
ну это понятно - я привела только пример, это не значит имменно в таком виде к в код и вставлю. Я просто думала, есть принципиальная разница ну например в скорости обработки кода или что-то такое.
 

Born2be

Guest
Это как раз по теме что мне нужно, но... форма работает, а код нет. он не пишет ни
"Нет прав на запись"
ни
"Ошибка при загрузке"
ни
"Файл $tmp_fn загружен."

которче вообще ничего не пишет, после обработки сразу показывает опять форму с загрузкой и всё. =\ А проблема у меня та же. с других адресов вроде как грузит (проверил, установив Postnuke),а с моей тачки не грузит.
 

SiMM

Новичок
FAQ: debug
PS: а фразы "форма работает, а код нет", "вообще ничего не пишет" - это не описание проблемы, а галиматья какая-то.
 

Demiurg

Guest
Aknichy
про разницу в скорости в дданном случае забудь, не там оптимизировать надо.
 
Сверху