До 5 файлов, 5 ГБ каждый. Без сжатия.
Multipart, без ключа и регистрации. Ответ приходит сразу, файл дозаливается в фоне — готовность видно через /upload/status.
| file | обязательное, сам файл |
| expires_in | секунды до удаления, опционально |
| view_limit | сколько раз можно скачать, опционально |
Промежуточный прокси обрывает тело запроса на 100 МБ. Крупные файлы отправляются частями: три обычных HTTP-запроса, никакого браузера не нужно. Части идут по 20 МБ, порядковый номер обязателен.
| POST /upload/init | JSON: name, size, mime_type, expires_in, view_limit, private → вернёт file_id и part_size |
| POST /upload/part/{id}?index=N | тело — сама часть, без multipart |
| POST /upload/finish/{id} | собирает файл и возвращает ссылки |
| GET /i/{id} | страница файла |
| GET /raw/{id} | скачать, считается в лимит |
| GET /stream/{id} | потоковая отдача с перемоткой |
| GET /preview/{id} | предпросмотр до 10 МБ |
| GET /info/{id} | метаданные в JSON |
| GET /upload/status/{id} | готовность загрузки |
curl -X POST http://drive.unlim-projects.lol/upload \ -F "[email protected]" \ -F "expires_in=86400"
{
"success": true,
"status": "uploading",
"file_id": "AtQwhG",
"short_url": "http://drive.unlim-projects.lol/i/AtQwhG",
"raw_url": "http://drive.unlim-projects.lol/raw/AtQwhG",
"size": 31612844,
"mime_type": "video/mp4"
}
curl http://drive.unlim-projects.lol/upload/status/AtQwhG
{"status": "done", "chunks_done": 7, "chunks_total": 7}
# файл любого размера, частями по 20 МБ F=film.mp4; S=$(stat -c%s "$F") ID=$(curl -s -X POST http://drive.unlim-projects.lol/upload/init \ -H 'Content-Type: application/json' \ -d "{\"name\":\"$F\",\"size\":$S}" | jq -r .file_id) split -b 20971520 -d -a 4 "$F" part_ i=0; for p in part_*; do curl -s -X POST --data-binary @"$p" \ "http://drive.unlim-projects.lol/upload/part/$ID?index=$i" > /dev/null i=$((i+1)) done rm part_* curl -s -X POST http://drive.unlim-projects.lol/upload/finish/$ID