Files
quoter/docs/upload-quickstart.md
Untone ae0fc9a18d
Some checks failed
Deploy / deploy (push) Has been skipped
CI / lint (push) Successful in 1m53s
CI / test (push) Failing after 9m28s
0.6.4-thumb-upgrade
2025-09-03 10:21:17 +03:00

3.6 KiB
Raw Blame History

🚀 Upload API - Quick Start

Быстрый старт для интеграции с Quoter Upload API

🔗 Endpoints

Base URL: https://files.dscrs.site
GET  /           - Информация о пользователе
POST /           - Загрузка файлов  
GET  /{filename} - Получение файла

🔐 Аутентификация

Authorization: Bearer <jwt-token>

📤 Загрузка файла

JavaScript

async function uploadFile(file, token) {
  const formData = new FormData();
  formData.append('file', file);

  const response = await fetch('https://files.dscrs.site/', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${token}`
    },
    body: formData
  });

  if (!response.ok) {
    throw new Error(`Upload failed: ${response.status}`);
  }

  return await response.text(); // Возвращает filename
}

Python

import requests

def upload_file(file_path, token):
    with open(file_path, 'rb') as f:
        files = {'file': f}
        headers = {'Authorization': f'Bearer {token}'}
        
        response = requests.post(
            'https://files.dscrs.site/', 
            headers=headers, 
            files=files
        )
        response.raise_for_status()
        return response.text.strip()

cURL

curl -X POST \
     -H "Authorization: Bearer your-token" \
     -F "file=@/path/to/file.jpg" \
     https://files.dscrs.site/

📊 Информация о пользователе

async function getUserInfo(token) {
  const response = await fetch('https://files.dscrs.site/', {
    headers: {
      'Authorization': `Bearer ${token}`
    }
  });
  
  return await response.json();
  // { user_id, username, quota: { current_quota, max_quota, usage_percentage } }
}

📁 Получение файла

async function getFile(filename, token) {
  const response = await fetch(`https://files.dscrs.site/${filename}`, {
    headers: {
      'Authorization': `Bearer ${token}`
    }
  });
  
  return await response.blob();
}

🚨 Лимиты

  • Размер файла: 500 МБ максимум
  • Квота пользователя: 12 ГБ максимум
  • Форматы: изображения, аудио, видео, документы

Коды ошибок

  • 401 - Неверный токен
  • 413 - Превышена квота или размер файла
  • 415 - Неподдерживаемый формат
  • 500 - Ошибка сервера

💡 Пример использования

// Полный пример
const client = {
  baseUrl: 'https://files.dscrs.site',
  token: 'your-jwt-token',
  
  async upload(file) {
    const formData = new FormData();
    formData.append('file', file);
    
    const response = await fetch(`${this.baseUrl}/`, {
      method: 'POST',
      headers: { 'Authorization': `Bearer ${this.token}` },
      body: formData
    });
    
    if (!response.ok) throw new Error(`Upload failed: ${response.status}`);
    return await response.text();
  },
  
  async getUserInfo() {
    const response = await fetch(`${this.baseUrl}/`, {
      headers: { 'Authorization': `Bearer ${this.token}` }
    });
    return await response.json();
  }
};

// Использование
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
const filename = await client.upload(file);
console.log(`Загружен: ${filename}`);

📚 Полная документация: upload-client-guide.md