Скачать файл по нажатию кнопки
Здравствуйте! Подскажите как сделать так что бы при нажатии кнопки юзер мог скачать файл (например *.ехе), который лежит где то у меня на сервере?
А так же не пойму как сделать проверку при нажатии кнопки.
Например:
надо что бы юзер ввел email в поле перед тем как скачать, и я регулярным выражением проверю похожа ли структура на email и только потом, если все ОК, надо что бы началась скачка, а если не ОК то выделить границу поля ввода красным и написать что типа тут ошибка.
Запись в файл по нажатию кнопки
Не происходит запись в файл . Файл создаётся , но строка в нём так и не появляется: LPCVOID buf.
Запись в текстовый файл по нажатию кнопки
Подскажите, как в MS Visual C++ для приложения Windows Forms сделать так, чтобы при нажатии кпонки.
Открыть файл в программе по нажатию кнопки
Здравствуйте! Мне необходимо открыть текстовый файл по нажатию кнопки так, чтобы его мог.
Сохранение в текстовый файл по нажатию кнопки
Дамы и господа, столкнулся с задачей. Суть такова: по нажатию на кнопку в форме, у пользователя на.
Добавлено через 55 секунд
Выводите кнопку, при нажатии на нее выводите поля для заполнения. Если все верно — показываете ссыль. Если нет — выдаете ошибку..
спасибо!
немного не понял в какой момент оно будет проверять? тут же нет обработчика событий ввода как в C# например.
мне надо типа так:
[. поле для ввода email’a. ]
[. кнопка. ]
и вот после нажатия на кнопку шла проверка и если все ок, то начиналась загрузка
Сообщение от mikh
да, хтмл — язык разметки а не програмирования
поэтому, проверки и прочую логику нужно выполнять на каких-то языках именно программирования — php, javascript, perl и т.д.
Сообщение от mikh
кто Вам такое сказал? Именно события ввода есть в js, а отправлены данные или нет проверить можно и в пыхе
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
if(isset($_POST['email'])) { $email = trim($_POST['email']); if( !empty($email) && filter_var($email, FILTER_VALIDATE_EMAIL) ) { //все ок, не пустое, и мыло верное, отображаем ссыль echo 'Скачать'; } else { //ошибка, значение не ввели или неверный формат мыла } }
хмм! спасибо! про «filter_var» даже не слышал.
но я так понял тут выведет ссылку, а как сделать что бы закачка сразу началась если все ок ?
Добавлено через 6 часов 23 минуты
а так же файл скачивается в папку загрузки броузера а не дает выбрать папку для сохранения
Сообщение от mikh
это уже к разработчикам браузера и/или его (браузера) настройкам
Если в хроме — chrome://settings/ -> Показать дополнительные настройки -> поставить галку напротив «Запрашивать место для сохранения каждого файла перед загрузкой»
Сообщение от mikh
Сделал хедерами.
Еще вопрос: можно ли как-то отследить нажал ли юзер кнопку ОК и началась закачка? просто мне надо вести что-то типа книги записи а делать это по нажатию кнопки нельзя так как юзер может нажать ОТМЕНА когда ему предложет сохранить файл
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
function file_download($filename, $mimetype='application/octet-stream') { if (file_exists($filename)) { header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK'); header('Content-Type: ' . $mimetype); header('Last-Modified: ' . gmdate('r', filemtime($filename))); header('ETag: ' . sprintf('%x-%x-%x', fileinode($filename), filesize($filename), filemtime($filename))); header('Content-Length: ' . (filesize($filename))); header('Connection: close'); header('Content-Disposition: attachment; filename="' . basename($filename) . '";'); $f=fopen($filename, 'r'); while(!feof($f)) { echo fread($f, 1024); flush(); } fclose($f); } else { header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found'); header('Status: 404 Not Found'); } exit; }
а вот такая функция есть, я ее поставил в часть кода где идет проверка эмайла и если ок она отрабатывает. только вот не пойму немного она отрабатывает когда я нажал ОК и началась скачка ? как я понял .
просто тут типа по частям передается файл, по этому так и подумал.
если это так то я могу свою функцию записи в лог вставить в эту функцию
Добавлено через 34 минуты
пойду в js! спасибо!
Полностью своя кнопка «Выбрать файл»
Предлагаю на суд сообщества свой велосипед. На написание данного текста вдохновил Способ №5 из материала Делаем красивый input[type=file] для адаптивного сайта… И да — все работает в IE, начиная с 9 версии.
Цель: создать свою кнопку/элемент управления по нажатию которой происходит загрузка файла на сервер (либо иные, предусмотренные разработчиком, файловые операции).
Инструменты: CSS, PHP, JavaScript.
Используемые технологии: Ajax, через скрытый iframe.
Преамбула
Из кода для упрощения сознательно выкинуты все процедуры проверки принятого файла и try-catch вызовов функций, так как эти моменты не являются темой данной статьи. Также не охватывается момент по предотвращению звукового сигнала в IE. В работе используем технологию Ajax, подразумевающую, что у нас есть основная страница, осуществляющая взаимодействие с пользователем(front-end) и скрипт на сервере, обрабатывающая наши запросы(back-end)
Технология работы
1. На главной странице создаем «form action» Делаем ей target на скрытый фрейм, который создаем статически (или динамически). Создаем два «input» с типом «file» и «submit», даем им «id», помещаем их в «div», который спрячем со страницы стилем. Все эти элементы не видимы для пользователя и не воспринимают каких-либо его действий.
2. Начинаем «магию». Для «input» с типом «file» на событие по изменению вешаем вызов функции onchange=«LoadFile();».
3. На главной странице создаем кнопку. Навешиваем ей на событие нажатия кнопки мыши вызов функции onclick=«FindFile();».
4. В функции FindFile() имитируем клик на «input» с типом «file». То есть при нажатии на нашу кнопку вызывается стандартный диалог выбора файла. Как только пользователь выбрал файл, срабатывает событие onchange и вызывается функция LoadFile(). В функции LoadFile() имитируем клик на «input» с типом «submit».
5. Форма формирует POST запрос с именем файла к нашему back-end скрипту, который осуществляет все проверки по безопасности и загрузку файла. После этого скрипт вызывает callback функцию главной страницы, которой сообщает о результате выполнения.
Собственно все. Для примера приведены четыре основных файла, код которых приведён ниже:
css/style.css – стили главной страницы
view/upload.php – back-end скрипт загрузки файла
index.php – главная страницы
js/upload.js – front-end скрипты главной страницы
Кроме того, необходим любой файл с картинкой для кнопки buttons/openfile.png
Загружаемые файлы помещаем в директорию ../temp/
.navButtons < border:1px gray solid; position:absolute; overflow: hidden; display:block; height:50px; width:50px; margin:10px; -moz-box-shadow:5px 5px 7px rgba(3,33,33,.7); -webkit-box-shadow: 5px 5px 7px rgba(3,33,33,.7); box-shadow: 5px 5px 7px rgba(3,33,33,.7); -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; >.navButtons:hover < border:2px solid black; background-color:#fff; >.hiddenInput < position:absolute; overflow: hidden; display:block; height:0px; width:0px; >Input мы просто делаем нулевой ширины и высоты
window.parent.onResponse("'.$obj.'"); '; > // определяем куда скопируем файл пользователя $dir = '../temp/'; $name = basename($_FILES['loadfile']['name']); $file = $dir . $name; //копируем файл и получаем результат $success = move_uploaded_file($_FILES['loadfile']['tmp_name'], $file); //вызываем callback функцию и передаем ей результат jsOnResponse(""); ?>