Hujjatlardan qidirish

Sahifa yoki bo‘lim nomini kiriting

Funksiyalar

Fayllar va extraction

Presigned/multipart upload, integrity tekshiruvi, preview, extraction va cleanup.

Upload protokoli

  1. Client filename, size, MIME va SHA-256 bilan upload intent yaratadi.
  2. API private object key va 300 soniyalik upload URL/proxy qaytaradi.
  3. Katta faylda multipart part URL’lari olinadi va ETaglar bilan finalize qilinadi.
  4. Client complete endpointni chaqiradi.
  5. Server HEAD/stream orqali size, digest, MIME va magic bytesni tekshiradi.
  6. Verified state va extraction job bir izchil DB operatsiyasida yaratiladi.

Format va chegaralar

ParametrQiymat
Maksimal fayl50 MiB
Filename255 baytgacha
Upload URL TTL300 soniya
IntegrityBase64 SHA-256 + obyekt size
RasmlarPNG, JPEG, WebP
HujjatlarPDF, DOCX, plain text, Markdown, JSON, CSV
KodKeng tarqalgan source extensionlari
ArxivZIP, bounded extraction

Xavfsiz extraction

  • PDF child process 30 soniyadan keyin kill qilinadi va GOMEMLIMIT=256MiB bilan cheklanadi.
  • DOCX/ZIP entry soni, uncompressed size va path traversal bo‘yicha bounded.
  • Declared MIME extension va magic-byte sniffing bilan solishtiriladi.
  • Extraction natijasi chunklarga yoziladi; job retry olsa, fencing eski workerning write’ini rad etadi.

Preview, download va delete

Preview va download avval user ownershipni tekshiradi, keyin private obyektga vaqtinchalik kirish beradi. O‘chirish ikki bosqichli: DB yozuvi deleting bo‘ladi, worker S3 obyekt/chunklarni tozalaydi va deleted holatiga o‘tkazadi.

Delete state machine
ready | failed → deleting → deleted
                      └─ retryable cleanup job

Single-part upload misoli

Intent → upload → complete
SHA256_BASE64=$(openssl dgst -sha256 -binary report.pdf | openssl base64 -A)

curl -X POST "$APP_URL/api/files/presign" \
  -H "Content-Type: application/json" -H "X-CSRF-Token: $CSRF" \
  -b cookies.txt \
  -d "{\"filename\":\"report.pdf\",\"size\":1048576,\"mime_type\":\"application/pdf\",\"sha256\":\"$SHA256_BASE64\"}"

# Javobdagi upload URL bilan PUT qiling, so‘ng:
curl -X POST "$APP_URL/api/files/$FILE_ID/complete" \
  -H "X-CSRF-Token: $CSRF" -b cookies.txt