storage.vas3k.ru


Сторадж - хранилище для файлов на моем сервере. С давних пор я использовал отдельную папку на сервере как файлопомойку для быстрого и контролируемого обмена файлами. Кинуть фоточку, залить архив, сделать шпоры онлайн, и.т.д. Куча применений, особенно удобно мне - ведь залить по гигабитному каналу что-то на сервер для меня пустяки, а остальные скачают со своей скоростью интернета. А если у нас один провайдер, то еще быстрее.

Как я писал в обзорном посте:

В первой версии сторадж представлял из себя просто файл index.php, который сканировал папку, в которой лежал, разбивал все файлы по категориям, и выводил списком. Скачивались файлы, естественно, по давней традиции тупо по хотлинку. От этой практики я решил тоже отказаться. В общем во второй версии я решил завести для всего этого дела небольшую БД (sqlite вполне подошел) и переписать-таки все на питоне.

Теперь при загрузке файла и всяких очевидных проверок на коллизии имен, он клался в специальную папочку, а запись о нем, сгенерированный ID и еще куча полезных параметров, клались в sqlite. Одной фичей, подсмотренной в одном платном сервисе, был просмотр истории скачиваний, его я тоже захотел себе. Поэтому когда пользователь хочет скачать файл: делается запрос в БД на существование записи и изъятие полного имени файла (файл при заливке немного переименовывается, а при коллизиях - тем более), если все удачно - запрос к диску на проверку существования файла (ну мало ли что бывает), когда и тут все хорошо - запись в историю доступа и, собственно, отдача файла по http.

И то, чему и был посвящен тот пост, это главная фича стораджа - он отдает файлы как статику nginx, при этом учитывая все скачивания. Реализовано через заголовок X-Accel-Redirect и все, кому было интересно, уже прочитали HOWTO по ссылке выше.

В общем-то ограничений на сторадже нет никаких, кроме одного - размер файла. Сейчас верхняя планка стоит в 500 мегабайт, в будущем может быть поднята, если кому-то понадобится. За файлами, находящимися там, я слежу и иногда провожу глобальные чистки, если мне кажется, что он засрался старыми и давно никому не нужными файлами. Обычно для небольших файлов это пол года, а для архивов в сотни мегабайт решается индивидуально. Так что не используйте его как постоянное хранилище файлов, для этого есть другие сервисы, сторадж - достаточно временное хранилище, за которым я постоянно присматриваю.

А еще я написал себе скриптик на Python и сделал из него .app в OS X для быстрой заливки файлов по drag-n-drop'у на иконку. Каждый может сделать себе то же самое, кому лень писать - исходник занимает всего пару строк (для работы нужен Python 2.x и либа MultipartPostHandler, устанавливающаяся через easy_install, файлы для загрузки принимает как параметры командной строки):

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import urllib2
import MultipartPostHandler

for arg in sys.argv[1:]:
params = {
'return_filename': "1", # чтобы в ответе сразу получить ссылку на файл
'file': open(arg, 'rb') # может быть плохо?
}
opener = urllib2.build_opener(MultipartPostHandler.MultipartPostHandler)
urllib2.install_opener(opener)
req = urllib2.Request('http://storage.vas3k.ru/upload/', params)
resp = urllib2.urlopen(req).read().strip()
print(resp)

Nimox 23.01.2012 - 19:11
Хороший сервис, спасибо. Самый удобный обменик для меня. ;)
Комментировать