Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2014, 19:33   #1
monolitsk
Новичок
Джуниор
 
Регистрация: 19.02.2014
Сообщений: 5
Стрелка Загрузка файла большого размера с одного устройства

Здравствуйте!
Сейчас делаю сайт и передо мной стоит задача - позволить зарегистрированному пользователю скачать файл большого размера (3-8 Гб) по ссылке, которая выдаётся этому пользователю в личном кабинете. Никто, кроме этого пользователя не должен иметь возможности скачивать этот файл.
В голову приходили следующие идеи:
1. Сделать привязку к IP-адресу. Не подходит - проблема динамических IP.
2. Определить время жизни ссылки, например, 24 часа. Но за эти 24 часа много человек смогут скачать этот файл, если недобросовестый пользователь поделится с ними ссылкой.
3. Сомнительная идея - сделать динамическую ссылку с определённым временем жизни. Само собой данные о ссылку хранятся в БД. Так вот, сделать у каждой ссылки дополнительное поле и в него будет постоянно записываться номер последнего куска отданных данных. Но идея такая туманная, сервер и БД с ума сойдут.
4. Есть вариант - сделать привязку к юзер-агенту. Но ведь сначала пользователь может начать загружать файл через браузер, а потом перенести в какой-нибудь менеджер загрузок.

То, что мне нужно, я понимаю, реализовано в файлообменниках, типа Deposit Files. Но сам понять не могу, как так сделать. Будьте добры, помогите.
monolitsk вне форума Ответить с цитированием
Старый 19.02.2014, 19:48   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Привязка к кукам или сессии к вам не приходила в голову?
Кольша вне форума Ответить с цитированием
Старый 19.02.2014, 19:59   #3
monolitsk
Новичок
Джуниор
 
Регистрация: 19.02.2014
Сообщений: 5
По умолчанию

А разве менеджеры загрузок поддерживают куки? Download Master или Orbit Downloader, например.
monolitsk вне форума Ответить с цитированием
Старый 19.02.2014, 20:05   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ссылка должна быть одноразовой – один раз скачал, и всё.
А там пусть качает, как хочет – через браузер, или download manager какой, это его дело.
Но – только один раз.
Нужно новое скачивание этого же файла для этого же юзера – генерим ему новую одноразовую ссылку.
Andkorol вне форума Ответить с цитированием
Старый 19.02.2014, 20:07   #5
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

А..т.е. вы допускаете загрузку через менеджер закачек?
Ну тогда нужно хранить, что-то в имени файла.
Кольша вне форума Ответить с цитированием
Старый 19.02.2014, 20:12   #6
monolitsk
Новичок
Джуниор
 
Регистрация: 19.02.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Ссылка должна быть одноразовой – один раз скачал, и всё.
А там пусть качает, как хочет – через браузер, или download manager какой, это его дело.
Но – только один раз.
Нужно новое скачивание этого же файла для этого же юзера – генерим ему новую одноразовую ссылку.
К сожалению, нужна возможность докачки файла, т.к. его размер может достигать 8 Гб, и может случиться всякое - вырубится интернет, электричество или банально не позволяет скорость скачать за раз. А так да, самый очевидный и простой вариант.
monolitsk вне форума Ответить с цитированием
Старый 19.02.2014, 20:19   #7
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Сделайте базу ссылок, в ней параметры, кол-во загрузок, сейчас загружается, последний запрос.
И потом ими уже оперируйте при отдаче ссылок.
Если слишком много загрузок можно не отдавать, или если сейчас грузится. А если например с момента последнего запроса прошло боль, чем нужно тоже шлите лесом.
Можно еще адреса(ip) добавить, если их больше, например больше 3, туда же их.

Последний раз редактировалось Кольша; 19.02.2014 в 20:21.
Кольша вне форума Ответить с цитированием
Старый 19.02.2014, 20:29   #8
monolitsk
Новичок
Джуниор
 
Регистрация: 19.02.2014
Сообщений: 5
По умолчанию

Ага, сейчас посмотрим, может получится что.

Последний раз редактировалось monolitsk; 19.02.2014 в 20:34.
monolitsk вне форума Ответить с цитированием
Старый 19.02.2014, 20:32   #9
monolitsk
Новичок
Джуниор
 
Регистрация: 19.02.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Ссылка должна быть одноразовой – один раз скачал, и всё.
А там пусть качает, как хочет – через браузер, или download manager какой, это его дело.
Но – только один раз.
Нужно новое скачивание этого же файла для этого же юзера – генерим ему новую одноразовую ссылку.
Аааа, кажется, я сначала не так вас понял, я подумал, что ссылка становится неактивной тогда, когда рвётся соединение с сервером, а потом понял, что вы имели ввиду - для скачивания файла генерируется ссылка с уникальным ключом, каждая такая ссылка в базе данных имеет ячейку, отвечающую за то, был ли файл хоть раз скачан полностью. Как только файл будет отдан полностью первый раз, ссылка либо становится неактивной, либо просто удаляется из БД, таким образом по одной ссылке скачать файл до конца можно только один раз.
Спасибо, что натолкнули на идею!

Последний раз редактировалось monolitsk; 19.02.2014 в 20:35.
monolitsk вне форума Ответить с цитированием
Старый 20.02.2014, 11:23   #10
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Можно без БД обойтись. На сервере генерируйте url с token'ом - md5 от посолённого id\login юзера и имени файла.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение размера файлов большого размера stpdqstns Общие вопросы C/C++ 4 13.03.2013 11:50
Программа для копирования файла из одного места в другое с просчётом размера исходного файла (Delphi) Xoma37 Помощь студентам 4 11.09.2012 17:58
вывод буквы большого размера masterbet Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 12 30.11.2011 23:57
Хранение большого размера фото Droid БД в Delphi 0 07.05.2010 01:57
Сохранение книги большого размера. nemoomen Microsoft Office Excel 12 22.03.2009 05:57