Недавно захотел написать программу для изучения библиотеки для Python — requests. Мой выбор пал на написание программы для скачивания файлов.
Поскольку мы будем использовать библиотеку requests, импортируем её (+shutil):
import requests, shutil
Код «меню» (это заключено в while True для возможности выхода break’ом и работы программы много раз без перезапуска):
menu = input(«Ready.n») if menu == «get»: #режим загрузки #. if menu == «about»: #о программе #. if menu == «exit»: #выход #.
В get’е спрашиваем путь к файлу: (причём отдельно директорию и имя файла, зачем это нужно — скажу позже):
dirfile = input(«Enter path to the directory with file(no «www.» !):») file = input(«Enter the name of the file:»)
А для requests ведь нужен полный путь! Не беда, склеим dirfile и file:
fullpath = dirfile + file
Иногда, чтобы скачать файл, нужно войти. Это нужно реализовать!
Спросим пользователя об этом:
Как создать Web-Installer, программу установки, для загрузки файлов с сервера(сайта)
reqauthstr = input(«Do you need authentification?[y/n]:») while True: if reqauthstr == «y» or reqauthstr == «Y»: reqauth = True break elif reqauthstr == «n» or reqauthstr == «N»: reqauth = False break else: print(«Incorrect command.»)
Если нужно входить, тогда напишем запрос с аутентификацией. Спрашиваем логин и пароль:
if reqauth == True: user = input(«Login:») passw = input(«Password:»)
Создаём сам get-запрос:
filereq = requests.get(fullpath,stream = True,auth=(user,passw))
И копируем файл (как раз, разделение пригодилось в open`e):
with open(file,»wb») as receive: shutil.copyfileobj(filereq.raw,receive) del filereq
Без аутентификации — практически тоже самое:
elif reqauth == False: filereq = requests.get(fullpath,stream = True) with open(file,»wb») as receive: shutil.copyfileobj(filereq.raw,receive) del filereq
Ну вот, закачку реализовали.
Остальные пункты меню:
if menu == «exit»: break if menu == «about»: print(«»» nxfetch — v0.1.0 Library: requests — v2.6.0 Author: Fedor Sturovn «»») else: print(«Incorrect command.n»)
- Интернет
- Python
- requests
- скачивание
- скачивание контента
- Python 3
- скачивание файла
- программирование
- на
- программирование на Python 3
- Python
- Программирование
Источник: habr.com
Как создать PHP-скрипт для загрузки файлов с помощью jQuery и AJAX
В этой статье я покажу, как добавить на сайт функционал для загрузки файлов с помощью jQuery, AJAX и MySQL.
Базовые настройки
- PHP 7.1.
- MySQL.
- Файл JQuery / Ajax.
Теперь займемся написанием скрипта для загрузки файлов.
Как выгрузить файл на Dropbox и сделать доступным по ссылке для скачивания
СозданиеPHP-скрипта загрузки файлов
- Создайте HTML-форму загрузки на основе Bootstrap.
- Создайте Ajax-скрипты для загрузки файлов.
- Примените проверку безопасности.
- Создайте PHP-скрипты для обработки данных.
Создание HTML-формы
HTML-форма — это интерфейс, через который пользователь передает данные серверу. Чтобы форма работала с файлами, нужно установить для элемента метод POST.
Еще одним важным атрибутом формы является enctype . Для него нужно установить значение multipart / form-data . А для атрибута type элемента загрузки файлов должно быть установлено значение file.
Создайте файл index.php и добавьте в него приведенный ниже код.
Ajax File Upload with jQuery andPHP
Ajax File Uploading with Database MySql
NAME EMAIL
www.Cloudways.com
В этой форме я использовал классы Bootstrap, чтобы применить для формы некоторые стили. Я также указал в атрибуте action файл ajaxupload.php .
Использование jQuery и AJAX для загрузки файлов
Для отправки данных и загрузки файлов будет использоваться jQuery и AJAX. Поэтому я начну с подключения библиотеки jQuery.
$(document).ready(function(e)< $(«#form»).on(‘submit’,(function(e)< e.preventDefault(); $.ajax(< url:»ajaxupload.php», type:»POST», data: newFormData(this), contentType:false, cache:false, processData:false, beforeSend:function() < //$(«#preview»).fadeOut(); $(«#err»).fadeOut(); >, success:function(data) < if(data==’invalid’) < // неверный формат файла. $(«#err»).html(«Invalid File !»).fadeIn(); >else < // просмотрзагруженногофайла. $(«#preview»).html(data).fadeIn(); $(«#form»)[0].reset(); >>, error:function(e) < $(«#err»).html(e).fadeIn(); >>); >)); >);
В приведенном выше коде метод $ajax() используется для отправки данных.
Настройка и подключение базы данных MySQL с помощью PHP
Следующим шагом будет настройка базы данных MySQL. Создайте таблицу с именем «uploading» . Поля таблицы: name , email , file_name :
CREATE TABLE`uploading`( `id`int(11)NOTNULLAUTO_INCREMENT, `name`varchar(100)COLLATE utf8_unicode_ci NOTNULL, `email`varchar(100)COLLATE utf8_unicode_ci NOTNULL, `file_name`varchar(100)COLLATE utf8_unicode_ci NOTNULL, PRIMARY KEY(`id`) )ENGINE=InnoDB DEFAULTCHARSET=utf8 COLLATE=utf8_unicode_ci;
Затем создайте файл db.php , предназначенный для соединения базы данных с PHP-приложением. Вставьте в него фрагмент кода, приведенный ниже:
connect_error)< die(«Unable to connect database: «.$db->connect_error); >
Создание PHP-скрипта для загрузки файлов
Когда пользователь взаимодействует с формой, файл загружается во временную папку. При этом вся информация о файле хранится в многомерном массиве $_FILES . Индексом ключа этого массива является атрибут name поля .
В нашем случае именем индекса является $_FILES [«image»] . Более подробная информация о загружаемом файле хранится в следующих индексах.
После того, как файл загружен во временную папку, и вся его информация сохранена в массиве, вызывается функция move_uploaded_file() . Она предназначена для перемещения файла из текущего временного местоположения в постоянную директорию. Процесс загрузки файла можно описать следующим образом:
1. Проверяем, возникли ли ошибки при загрузке.
2. Проверяем, разрешен ли тип загружаемого файла.
3. Проверяем, что загружаемый файл имеет допустимый размер.
4. Проверяем, является ли имя загружаемого файла корректным (если имя файла содержит /, это повлияет на путь сохранения).
5. Проверяем, что загружаемый файл еще не существует.
6. Загружаем файл.
Напишем PHP-скрипт для работы с функциями загрузки файлов. Создайте файл ajaxupload.php и добавьте в него приведенный ниже код.
«; $name=$_POST[‘name’]; $email=$_POST[’email’]; //включаем файл конфигурации базы данных include_once’db.php’; //вставляем данные формы в базу данных $insert=$db->query(«INSERT uploading (name,email,file_name) VALUES (‘».$name.»‘,'».$email.»‘,'».$path.»‘)»); //выводим $insert?’ok’:’err’; > > else < echo’invalid’; >> ?>
Теперь, когда все проверки выполнены, перемещаем загруженный файл из папки tmp в папку upload . Для этого создайте ее в каталоге проекта. В папку upload будут сохраняться загруженные изображения. pathinfo() — это встроенная функция, которая возвращает имя файла и расширение.
Проверяем наличие ошибок при загрузке
Чтобы проверить, это введите приведенный ниже код. Если значение error больше 0, значит, возникла ошибка.
if($errorimg>0) < die(‘An error occurred while uploading the file ‘); >
Проверяем, что файл имеет допустимый размер
Размер файла измеряется в байтах. Если ограничение на размер загружаемого файла установленона уровне 500kb, то он должен быть меньше 500000 байт.
if($myFile[‘size’]>500000) < die(‘File is too big ‘); >
move_uploaded_file — это функция, которая перемещает файл из $myFile[“tmp_name”] (временное место хранения) в «upload /» . $name (постоянное место хранения), а также проверяет запись таблицы базы данных.
Завершение
В этой статье я продемонстрировал, как создать PHP-скрипт для загрузки изображений и файлов с помощью AJAX и jQuery. Здесь вы найдете демо-версию этого приложения.
Источник: www.internet-technologies.ru
Работа с REST API Яндекс.Диска через Python Requests
Из этой статьи вы узнаете как работать с REST API Яндекс.Диском через Python используя HTTP запросы (ранее мы делали с помощью готовой библиотеки yadisk). Создадим небольшую программу для быстрой загрузки файлов прямо с проводника Windows.
Яндекс не ободряет когда его сервис используют только как хранилище для резервных копий.
Создать приложение и получить токен
Зарегистрируем приложение на oauth.yandex.ru и назовем его к примеру Backup1 , укажем платформу «Веб-сервисы» (воспользуемся URL для разработки), и разрешим API полный доступ к Диску.
В ответ мы должны получить информацию о новом приложение, сейчас нас интересует его ID
Что бы получить отладочный токен перейдем по ссылке ниже, заменив ID приложения на свой
https://oauth.yandex.ru/authorize?response_type=token
Напишем две функции для нашей будущей программы
Создать папку
def create_folder(path): «»»Создание папки. n path: Путь к создаваемой папке.»»» requests.put(f’?path=’, headers=headers)
Создаст папку hello world и API
create_folder(‘hello world’) create_folder(‘hello world/api’)
Загрузить файл
def upload_file(loadfile, savefile, replace=False): «»»Загрузка файла. savefile: Путь к файлу на Диске loadfile: Путь к загружаемому файлу replace: true or false Замена файла на Диске»»» res = requests.get(f’/upload?path= def create_folder(path): «»»Создание папки. n path: Путь к создаваемой папке.»»» requests.put(f’?path=’, headers=headers) def upload_file(loadfile, savefile, replace=False): «»»Загрузка файла. savefile: Путь к файлу на Диске loadfile: Путь к загружаемому файлу replace: true or false Замена файла на Диске»»» res = requests.get(f’/upload?path=»»Загрузка папки на Диск. n savepath: Путь к папке на Диске для сохранения n loadpath: Путь к загружаемой папке»»» date_folder = ‘_’.format(loadpath.split(‘\’)[-1], datetime.now().strftime(«%Y.%m.%d-%H.%M.%S»)) create_folder(savepath) for address, _, files in os.walk(loadpath): create_folder(‘//’.format(savepath, date_folder, address.replace(loadpath, «»)[1:].replace(«\», «/»))) bar = Bar(‘Loading’, fill=’X’, max=len(files)) for file in files: bar.next() upload_file(».format(address, file), ‘//’.format(savepath, date_folder, address.replace(loadpath, «»).replace(«\», «/»), file)) bar.finish() if __name__ == ‘__main__’: #backup(‘Backup’, r’C:Filesbackup’) backup(‘Backup’, os.getcwd())
Программа готова, добавим новую системную переменную
Теперь мы может загружать наши файлы из проводника используя переменную %backup%
Комментарии
pro100bro
01 января 2023
Вами было представлено не совсем корректное использование блока try/except. Если при GET запросе по каким-то причинам возникла ошибка, то уже до попадания в try/except, в переменной ‘res’ будет отсутствовать ключ ‘href’, то есть ссылка на загрузку. В этом случае мы можем использовать простой ‘if’, для проверки ответа от Яндекс диска: if ‘href’ not in response.keys(): print(f»Got an error: «) else: with open(loadfile, ‘rb’) as f: requests.put(response[‘href’], files=)
Рамис
02 января 2023
if res.get(«href»): .
Источник: ramziv.com