انتقل إلى المحتوى
use-cases / drag-drop-uploads-into-your-script / hero
PIPE · BROWSER → STDIN

رفع بالسحب والإفلات إلى سكربتك، بدون كتابة أي كود رفع

hoody-pipe يقدّم بالفعل نموذج رفع ويب على كل مسار يملكه. اسحب ملفاً إلى الصفحة، فتتدفّق البايتات عبر الأنبوب وصولاً إلى stdin الخاصّ بسكربتك. لم تكتب سطراً واحداً من كود الرفع.

اقرأ توثيق pipe

بدون كود رفع، بدون دلو S3، بدون روابط مُوقَّعة مسبقاً

use-cases / drag-drop-uploads-into-your-script / mechanism

كيف يصبح السحب بثّاً

hoody-pipe يُشغّل واجهة ويب عند جذر المسار، وبديلاً يعمل بدون JavaScript عند /noscript. كلاهما يبثّ بايتات multipart مباشرة إلى من يقرأ المسار نفسه. سكربتك يقرأ الأنبوب — هذا كلّ التوصيل الموجود.

browser ← pipe ← stdin4 خطوات · صفر مُعالِجات
  • 01

    اختر مساراً، شارك الرابط

    https://pipe.hoody.com/upload

    أيّ مسار لم تحجزه يصبح أنبوباً. الرابط هو صفحة الرفع.

  • 02

    المستخدم يُفلت ملفاً في المتصفّح

    GET /upload — نموذج رفع يُقدَّم تلقائياً

    Hoody يقدّم لك النموذج: منطقة إفلات، مُحلّل multipart، CSP nonce، كلّ ذلك مُضمّن. /noscript موجود للمتصفّحات المقيّدة.

  • 03

    البايتات تتدفّق عبر الأنبوب

    PUT /api/v1/pipe/upload (multipart/form-data)

    يُفكّ غلاف أوّل جزء multipart ويُبثّ إلى المستقبِل. لا تخزين على الخادم، لا ملفات مؤقّتة.

  • 04

    سكربتك يقرأ stdin

    curl …/api/v1/pipe/upload | python process.py

    المستقبِل والمُرسِل يتّصلان خلال TTL مدّته 5 دقائق. السكربت لا يعرف أنه خلف صفحة ويب — يقرأ البايتات فقط.

process.sh
# 1. سكربتك يقرأ الأنبوب
$curl https://pipe.hoody.com/api/v1/pipe/upload | python process.py
# 2. شخص ما يفتح https://pipe.hoody.com/upload في متصفّح،
# يُفلت invoice-q3.pdf على الصفحة،
# النموذج يُرسل البايتات إليك بـ PUT.
# 3. سكربتك يعالج stdin وينتهي
[OK]حُفظ في /data/uploads/invoice-q3.pdf

الأنبوب هو خادم الرفع. سكربتك هو المستقبِل. لا توجد عمليّة ثالثة — لا Lambda، لا API gateway، لا دالة وصل — بين منطقة الإفلات وstdin الخاصّ بك.

use-cases / drag-drop-uploads-into-your-script / no-code

ما لم تضطر لكتابته

كلّ بند أدناه يمثّل عمل يوم عاديّ لبناء أداة رفع لمرّة واحدة. الأنبوب يأتي بكلّ ذلك جاهزاً.

نموذج ويب

منطقة إفلات، اختيار ملفّ، تقدّم

واجهة الأنبوب تعرض منطقة سحب وإفلات، وبديلاً بالنقر للاختيار، وعرض تقدّم. /noscript يقدّم نموذج HTML خالصاً للمتصفّحات بدون JS — نفس المسار، بدون كود إضافيّ.

نقل

تحليل multipart وبثّه

عندما يُرسل المتصفّح multipart/form-data بـ POST، يستخرج الخادم أوّل جزء ويبثّه. لا تخزين مؤقّت للجسم، لا تنظيف ملفات مؤقّتة، لا مكتبة multipart من عشرة أسطر.

أمان

CSP nonce، أمان MIME، CORS preflight

النموذج يُشحن مع CSP nonce جديد. أنواع المحتوى الخطرة (text/html, image/svg+xml, application/javascript) تُعاد كتابتها إلى text/plain قبل وصولها إليك. OPTIONS يتولّى preflight عبر النطاقات.

اتصال

أيّ طرف يبدأ، اختيارك

شغّل سكربتك قبل أن يرفع أحد، أو بعد ذلك — الأنبوب يحتفظ بالاتصال حتى TTL مدّته 5 دقائق إلى أن يحضر الطرفان. عدد المستقبِلين (n) قابل للتعديل حتى 256.

use-cases / drag-drop-uploads-into-your-script / compare

ما يستبدله هذا

جنباً إلى جنب: مسار الرفع الذي كنت ستبنيه، مقابل الرابط الذي توجّه إليه سكربتك.

الجانبما كنت ستكتبهما يقدّمه Hoody
  • نموذج الرفعتطبيق Flask + dropzone.js + CSSGET /upload — نموذج جاهز
  • تحليل multipartMulter / formidable / busboyأوّل جزء يُفكّ غلافه على السلك
  • تخزيندلو S3 + endpoint لروابط مُوقَّعةبثّ مباشر إلى سكربتك
  • توجيهAPI Gateway + Lambda + IAMاختر مساراً، هذا هو المسار
  • بديل بدون JSنموذج ثانٍ، مُقدَّم من الخادم/noscript يقدّمه مجّاناً
  • ترويسات الأمانCSP، nonce، CORS، حواجز MIMEمُضمّنة في الأنبوب
use-cases / drag-drop-uploads-into-your-script / punchline

أنت كتبت السكربت. Hoody كتب نموذج الرفع.

أنت شحنت

process.py — يقرأ stdin، يقوم بالعمل

while read chunk; do …
Hoody شحن

الصفحة، النموذج، المُحلّل، الأمان

GET /upload — يُقدَّم تلقائياً
اقرأ توثيق pipe
use-cases / drag-drop-uploads-into-your-script / replaces

ما يستبدله هذا

الأنماط التي يلجأ إليها المطوّرون عند حاجتهم لرفع ملفّ لمرّة واحدة. كلّ واحد منها يفرض ضريبة إعداد — دلاء للتجهيز، middleware للتثبيت، مفاتيح توقيع للتدوير. الأنبوب هو رابط.

  • AWS S3 (روابط مُوقَّعة + دلو)جهّز دلواً، وقّع روابط، اجعلها تنتهي
  • Endpoints توجيه مخصّصةمسار رفع لكلّ مرّة، يُبنى يدوياً ويُنسى
  • Multer / formidable middlewareمكتبة multipart للتثبيت ورعاية
  • خدمات dropzone مستضافةSaaS طرف ثالث، فاتورة منفصلة
  • خطوط رفع S3 + Lambdaخدمتان وغراء IAM لنموذج واحد
  • Filestack / UploadcareSDK مورّد، حصر مع المورّد، تسعير المورّد
use-cases / drag-drop-uploads-into-your-script / cta

اختر مساراً. اقرأ الأنبوب. نموذج الرفع جاهز بالفعل على ذلك الرابط.

اقرأ دليل توجيه pipe
use-cases / drag-drop-uploads-into-your-script / related

اقرأ الآخرين