Как я могу передать полное имя файла через веб-форму? - PullRequest
0 голосов
/ 13 февраля 2012

Итак, у меня есть форма, которая передает файл на мой сервер.Что меня интересует, так это отправка только полного имени файла на сервер.В настоящее время мой код выглядит следующим образом:

<form action="upload.php" method="POST" >
    <table align="center">
        <tr>
            <td align="right">
                Select your file to upload:
            </td>
            <td>
                <input name="userfile" type="file" size="50">
            </td>
        </tr>
    </table>
    <table align="center">
        <tr>
            <td align="center">
                <input type="submit" name="submit" value="Upload image" />
            </td>
        </tr>
    </table>
</form>

Когда форма переходит к upload.php, значение, которое я получаю для $ _POST ['userfile'], является 'именем' файла, который я передаю,Я ищу, чтобы получить полный путь из этого поля, а не просто имя файла.Интересно, есть ли у кого-нибудь рекомендации для файлового браузера на стороне клиента, который может это вернуть, или, возможно, другой способ оценки этой формы для получения этих данных, я был бы очень признателен.Я попытался добавить 'enctype = "multipart / form-data" "к определению формы, и что действительно удивительно, так это то, что я не получаю никакой информации о форме на своей странице загрузки - это совершенно другая проблема.В любом случае, спасибо за любую помощь.

Редактировать

Уточните мой вопрос ... Я пытаюсь загрузить большие файлы на свой веб-сервер.HTTP формы ломаются после 100 мег или кто знает.С FTP трудно управлять в 30 системах с 10 различными пользователями, которые не знают, как определить, почему их клиент не может подключиться.Я пишу веб-форму для загрузки файлов на мой сервер, когда эти люди покончили с ними.Я пытаюсь найти решение для этого.Вышеуказанный скрипт должен передать мой полный путь к файлу следующего скрипта:

<?
set_time_limit(300);

var_dump($_FILES);
var_dump($_POST);
$filep=$_POST['userfile'];
$name=$_POST['userfile']['name'];

echo($filep);
echo($name);
$paths="test";
$ftp_server="localhost";
$ftp_user_name="digitaljedi";
$ftp_user_pass="dontworryaboutit";

// set up a connection to ftp server
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection and login result
if ((!$conn_id) || (!$login_result)) {
    echo "FTP connection has encountered an error!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name....";
    exit;
} else {
    echo "Connected to $ftp_server, for user $ftp_user_name".".....";
}

// upload the file to the path specified
$upload = ftp_put($conn_id, $paths.'/'.$name, $filep, FTP_BINARY);

// check the upload status
if (!$upload) {
    echo "FTP upload has encountered an error!";
} else {
    echo "Uploaded file with name $name to $ftp_server ";
}

// close the FTP connection
ftp_close($conn_id);    

?>

Если я добавлю тип кодировки в форму, я получу данные NO $ _POST и данные NO $ _FORMв upload.php, а точнее, неопределенные индексы для 'userfile'.Как это сидит;Если я загружаю, скажем ... 'C: \ users \ digitaljedi \ wtf.txt' - я получаю "wtf.txt" на другом конце.

.....

Я только что попытался настроить мой PHP для использования статического пути, а не пути из формы, и я все равно не смог открыть файл.Очевидно, ftp_put использует файловую систему сервера, что полностью отрицает всю мою теорию здесь.

Теперь я хочу знать следующее;НЕТ ли решения для загрузки больших файлов через веб-страницу?Я нашел флэш-загрузчик, но, похоже, он ограничен 100 мегабайтами (в документации сказано, что это все, что позволяет флэш-память).Это становится больше проблем, чем стоит.

Ответы [ 2 ]

2 голосов
/ 14 февраля 2012

Вы загружаете файл:

Во-первых, в вашей форме, отправьте его с <form> как:

<form enctype="multipart/form-data" action="uploader.php" method="POST">

Во-вторых, используйте переменную $ _FILES!

$_FILES['name_of_file_field']['name']

Это дает вам исходное имя файла - измените name_of_file_field, чтобы соответствовать имени поля ввода файла, вы использовали userfile, поэтому измените его на это.

Если они загружают файлы размером более 100 МБ, просто измените ограничение размера памяти, чтобы принимать файлы большего размера:

// Set the timeout to be longer to allow the file to upload, a value in seconds (3600 = 1 hour)
set_time_limit(3600);

// Set these amounts to whatever you need (1M = 1MB)
ini_set("post_max_size", "1000M");
ini_set("upload_max_filesize", "1000M");

// Generally speaking, the memory_limit should be higher than your post size.  So make sure that's right too.
ini_set("memory_limit", "1100M");
1 голос
/ 21 июля 2014

Осторожно : ini_set() НЕ МОЖЕТ использоваться для установки нового значения post_max_size или upload_max_filesize (среди прочих).

Действительно, этипеременные имеют PHP_INI_PERDIR права доступа , и такие переменные могут быть изменены ТОЛЬКО в пределах php.ini.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...