155 lines
3.6 KiB
Markdown
155 lines
3.6 KiB
Markdown
|
|
# 🚀 Upload API - Quick Start
|
|||
|
|
|
|||
|
|
**Быстрый старт для интеграции с Quoter Upload API**
|
|||
|
|
|
|||
|
|
## 🔗 Endpoints
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Base URL: https://files.dscrs.site
|
|||
|
|
GET / - Информация о пользователе
|
|||
|
|
POST / - Загрузка файлов
|
|||
|
|
GET /{filename} - Получение файла
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔐 Аутентификация
|
|||
|
|
|
|||
|
|
```http
|
|||
|
|
Authorization: Bearer <jwt-token>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📤 Загрузка файла
|
|||
|
|
|
|||
|
|
### JavaScript
|
|||
|
|
|
|||
|
|
```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
|
|||
|
|
|
|||
|
|
```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
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST \
|
|||
|
|
-H "Authorization: Bearer your-token" \
|
|||
|
|
-F "file=@/path/to/file.jpg" \
|
|||
|
|
https://files.dscrs.site/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 Информация о пользователе
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
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 } }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📁 Получение файла
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
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` - Ошибка сервера
|
|||
|
|
|
|||
|
|
## 💡 Пример использования
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// Полный пример
|
|||
|
|
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](upload-client-guide.md)
|