Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 379
1

Перехватить название файла при загрузке через форму где type="file" в переменную

21.01.2021, 01:25. Просмотров 394. Ответов 10
Метки нет (Все метки)

Доброго времени суток. Понятно, что файл можно загрузить через форму типа <input type="file">. Но если не нужно загружать файл. Можно ли как-то получить имя выбранного файла в переменную? Ведь рядом с формой до выбора пишется, что файл не выбран. А после выбора пишется его имя. Где хранится путь? Через F12 в мазиле пока отследить не смог. И в инете вроде нигде не пишется.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2021, 01:25
Ответы с готовыми решениями:

Как проконтролировать размер файла при upload'е через input type="file"?
Имеем форму для заливки файлов (фотографий) на сервер организованную посредством &lt;input...

Попытка открыть диалог выбор файла input type="file" через jq
&lt;form method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&gt; &lt;input type=&quot;file&quot;...

Как по пути к файлу в интернете получить массив файла, как если бы он был загружен через <input type="file">?
Есть путь к файлу на чужом сайте, например &quot;http://site/pics/image34.jpeg&quot;. Нужно передать его...

При отправке данных с формы на почту, из-за Jquery, там где type="password" приходят не символы, а "****"
&lt;!DOCTYPE html &gt; &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt; ...

10
Эксперт PHP
4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
21.01.2021, 01:28 2
https://developer.mozilla.org/... plications
1
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 379
21.01.2021, 15:07  [ТС] 3
Цитата Сообщение от Jewbacabra Посмотреть сообщение
https://developer.mozilla.org/... plications
К сожалению там только примеры на js в котором я не разбираюсь. Но судя по всему нужно использовать getElementsByTagName типа такого:
PHP
1
2
3
4
5
6
7
$xml='путь к файлу';
$dom = new DOMDocument;
$dom->loadXML($xml);
$inputs = $dom->getElementsByTagName('input');
foreach ($inputs as $input) {
    echo $input->nodeValue, PHP_EOL;
}
Но вот что указывать в путь?. Где хранится эта инфа? По идее файл должен называться file.xml или как-то так. Но пока ничего подобного не нашел.
0
Эксперт PHP
4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
21.01.2021, 16:08 4
Цитата Сообщение от DyadyaGe Посмотреть сообщение
К сожалению там только примеры на js в котором я не разбираюсь
А были другие ожидания? На php клиентский код не пишут.

Цитата Сообщение от DyadyaGe Посмотреть сообщение
Но вот что указывать в путь?. Где хранится эта инфа?
Задача какая решается этим действием? Пока все очень похоже на проблему XY
0
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 379
21.01.2021, 18:58  [ТС] 5
Цитата Сообщение от Jewbacabra Посмотреть сообщение
А были другие ожидания?
Честно говоря я туда заглядывал только когда верстку разбирал, гриды ))) Так что даже без понятия, что там может быть. Но после этого примера стал догадываться )))
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Задача какая решается этим действием?
Устал вписывать довольно большую функцию с прорисовкой окошка выбора файлов. Мне не нужно их загружать, зато нужно выбирать с какими работать. Загружать и потом работать не очень интересно. Проще сразу по месту считать содержимое и обработать как надо не перенося в какие-нибудь временные папки и тп.
Тут по идее кода должно быть строк 5. А у меня аж под 30.
js конечно учить надо, но не сейчас.
0
Эксперт PHP
4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
21.01.2021, 19:04 6
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Устал вписывать довольно большую функцию с прорисовкой окошка выбора файлов.
Это и был правильный путь, если требуется работа с файлом, который расположен на сервере. Пользовательские файлы и сервер находятся физически в разном месте. И даже если в случае локальной разработки нужно считать что находятся в разных местах. И вообще в вебе лучше не думать что у пользователя есть какая-то файловая система, доступа к ней все равно нет.
0
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 379
21.01.2021, 21:44  [ТС] 7
Цитата Сообщение от Jewbacabra Посмотреть сообщение
доступа к ней все равно нет
А, ну да, потому и js в справочнике. Вечно об этом забываю. С другой стороны всегда можно из js передать данные в php на сервер. Ну очень не хочется грузить на сервер лишние файлы. Думай потом что чистить.
0
867 / 598 / 275
Регистрация: 31.08.2019
Сообщений: 1,722
22.01.2021, 00:21 8
Цитата Сообщение от DyadyaGe Посмотреть сообщение
что чистить.
Можно загружать и просто работать работать с $_FILES['userfile']['tmp_name']
... всё само сразу-же будет чиститься

https://www.php.net/manual/ru/... method.php

По окончанию работы скрипта, если загруженный файл не был переименован или перемещён, он будет автоматически удалён из временной папки.
0
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 379
22.01.2021, 11:59  [ТС] 9
Цитата Сообщение от x_lab Посмотреть сообщение
Можно загружать и просто работать
Вот как-то раньше не задавался вопросом, как происходит обработка файла, который не был загружен на сервер, но его содержимое было прочтено с компа пользователя? Насколько это безопасно по сравнению с загрузкой файла на сервер?
0
867 / 598 / 275
Регистрация: 31.08.2019
Сообщений: 1,722
22.01.2021, 14:20 10
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Насколько это безопасно по сравнению с загрузкой файла на сервер?
Настолько-же )) это та-же загрурка файла методом POST ... с клиентской машины на сервер.
Только прямого доступа клиенту к скачиванию/выполнению файла предоставлять не предполагается,
и не выполняется перемещение/перезаписи временного загруженного файла.
... Предполагается работа скрипта , в течении времени выполнения, с содержимым таких временных файлов.
Если не будет уязвимостей в способах обработки содержимого, останутся только нюансы с временем выполнения кода
и с нагрузкой на сервер.
Иногда любые практически безопасные действия могут быть чуть более затратными ,) что можно использовать для DDOS-атак

max_input_time integer
Эта директива задает максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные, переданные запросами вроде POST или GET. Это время измеряется от момента, когда PHP вызван на сервере до момента, когда скрипт начинает выполняться. Значение по умолчанию -1, что означает, что будет использоваться max_execution_time. Если установить равным 0, то ограничений по времени не будет.
Не знаю насколько так всегда ,) но у меня если делаю с файлом чуть менее 100м
такой .htaccess
php_value max_execution_time 1
php_value max_input_time -1

получаю Maximum execution time of 1 second exceeded
а такой
php_value max_execution_time 1
php_value max_input_time 1

Нормально успевается ))

Значит как понимаю это "означает, что будет использоваться max_execution_time"
на самом деле означает что max_input_time использоваться не будет и оба времени объединяются в одно )
0
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 379
22.01.2021, 14:43  [ТС] 11
Цитата Сообщение от x_lab Посмотреть сообщение
и не выполняется перемещение/перезаписи временного загруженного файла
и
Цитата Сообщение от x_lab Посмотреть сообщение
и с нагрузкой на сервер
получается, что нагрузка будет слегка меньше, если файл не загружать на сервер, а просто передавать содержимое. Ну возможно увеличиться слегка время обработки.
Цитата Сообщение от x_lab Посмотреть сообщение
Иногда любые практически безопасные действия могут быть чуть более затратными ,) что можно использовать для DDOS-атак
Да, обширное поле для размышлений. Надо будет по свободе почитать подробней.

Но пока прихожу ко мнению, что с клиентской машины проще загрузить именно содержимое файла для его последующей обработки, чем загружать файл, обрабатывать и удалять.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2021, 14:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Value input type="file" возвращает "C:\FakePath\file.ext"
Стандартный input type=&quot;file&quot;. Стандартная проблема - value этого инпута возвращает...

Загрузка картинка в img (через input type="file")
У меня на странице есть ссылка &lt;a href=&quot;javascript:showFrm()&quot;&gt;Загрузить...&lt;/a&gt; и скритый тэг...

Вставить путь до файла в поле <input type="file"
Всем привет ,нужно вставить на данной страничке...

Программный выбор файла в input type="file"
Кто скажет как в webbrowser программно выбрать файл с компьютера input type=&quot;file&quot; получит пряник!

Удаление поля input type="file" с заданным именем файла
Если у меня есть несколько полей для прикрепления файлов input type=&quot;file&quot;, как можно удалить...

Как отловить событие загрузки файла в теге input type="file"
accept почему-то не работает, решил сделать проверку на формат через js, как и всю остальную форму....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.