اجمع ملفات نصية في ZIP واحد
أنشئ ملف ZIP قابلًا للتنزيل بلصق النص في ما يصل إلى 50 إدخالًا مسمى. تُحفظ المجلدات النسبية الآمنة؛ ولا يدعم النموذج بعد رفع PDF أو الصور أو الملفات الثنائية الأخرى.
شغّل الأداة مجانًا
لماذا تحتاج أرشيفًا واحدًا لا ملفات متفرقة
اجمع الإعدادات والسجلات وCSV وملاحظات الشفرة والنصوص الأخرى في تنزيل واحد. أضف صفًا لكل إدخال، وحدد مسارًا نسبيًا آمنًا، والصق النص ثم نزّل ZIP.
ما الذي يحافظ عليه الأرشيف
يحتوي كل إدخال على اسم أو مسار نسبي ونص UTF-8. تُحفظ المسارات الآمنة مثل docs/readme.txt، بينما تُرفض المسارات المطلقة و.. والشرطة المائلة العكسية.
الاستخدام من الصفحة مباشرة
يستخدم ZIP طريقة store لتجميع البايتات دون تقليل الحجم. الميزة هي تنزيل واحد متوافق، لا ضغط الحجم.
الأتمتة عبر الـAPI
يقبل الـAPI العقد نفسه: حتى 50 عنصرًا نصيًا من نوع {name, content} بسعر $0.002 للطلب. رفع الملفات الثنائية غير متاح بعد.
حالات الاستخدام
تصدير بيانات نصية
يجمع تطبيق ملف CSV وبيان JSON وملخصًا نصيًا في تنزيل واحد.
إعدادات مشروع لفريق التطوير
يجمع فريق README والترخيص ونص الإعدادات في مجلدات فرعية آمنة.
سجلات نصية يومية
تجمع عملية يومية ما يصل إلى 50 سجلًا نصيًا.
الأسئلة الشائعة
هل يحافظ الأرشيف على المجلدات الفرعية؟
تُحفظ المسارات النسبية الآمنة. تُرفض المسارات المطلقة و.. والشرطة المائلة العكسية.
هل الاستخدام من المتصفح مجاني؟
نعم، حتى 50 إدخالًا نصيًا في كل ملف ZIP. أما الـAPI فسعره $0.002 للطلب الواحد.
هل تُرسل ملفاتي لأي خادم عند الاستخدام من الصفحة؟
يبقى النص المُدخل في المتصفح. لا يقبل هذا النموذج ملفات ثنائية.
هل يمكن حماية الأرشيف بكلمة مرور؟
لا تدعم هذه الأداة كلمة مرور حاليًا؛ الغرض منها تجميع الإدخالات النصية فقط.
كم إدخالًا نصيًا يمكنني إضافته؟
حتى 50 إدخالًا نصيًا. لا يدعم النموذج PDF أو الصور أو الملفات الثنائية الأخرى بعد.
هل يفتح أي شخص الأرشيف دون برنامج خاص؟
نعم، صيغة ZIP مدعومة تلقائيًا في كل أنظمة التشغيل الحديثة دون أي برنامج إضافي.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/data/zip \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"files":[{"name":"a.txt","content":"hola"}]}'const res = await fetch("https://api.kit.forhosting.com/data/zip", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"files": [
{
"name": "a.txt",
"content": "hola"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/zip",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"files": [
{
"name": "a.txt",
"content": "hola"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/zip", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"files":[{"name":"a.txt","content":"hola"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"files":[{"name":"a.txt","content":"hola"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/zip", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"files": [
{
"name": "a.txt",
"content": "hola"
}
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.zip",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 25 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |