طريقة الاستخدام
- الصق سلسلة Base64 أو data URI الكامل في حقل المدخلات. ولا تهمّ المسافات وفواصل الأسطر.
- تحقّق من «النوع المكتشف» والحجم. وتظهر الصور وملفات PDF والصوت والفيديو والنصوص في معاينة.
- نزّل الملف. يُحفظ باسم وامتداد يطابقان النوع المكتشف.
كيف يُكتشف نوع الملف
يحمل نص Base64 بايتات، لا اسم ملف. وما لم تلصق data URI يتضمن نوع MIME، فلا شيء في السلسلة يدل على أنها تحتوي على ملف PDF أو أرشيف ZIP أو مقطع صوتي. لذلك تفك الأداة ترميز البيانات وتفحص البايتات الأولى، أي توقيع الملف أو «البايتات السحرية» التي تضعها معظم الصيغ في بدايته تمامًا. ولأن هذه البايتات ثابتة، يبدأ نص Base64 لكل صيغة أيضًا بشكل يمكن التعرف عليه:
| الصيغة | البايتات الأولى | تبدأ سلسلة Base64 بـ |
|---|---|---|
%PDF | JVBER | |
| PNG | 89 50 4E 47 | iVBORw0KGgo |
| JPEG | FF D8 FF | /9j/ |
| GIF | GIF8 | R0lGOD |
| ZIP (وكذلك DOCX وXLSX وJAR) | PK 03 04 | UEsDB |
| MP3 مع وسم ID3 | ID3 | SUQz |
| WAV وWebP وAVI (RIFF) | RIFF | UklGR |
عندما لا يُفتح الملف بعد فك الترميز
فك ترميز Base64 عملية بلا فقدان، لذا فإن الملف التالف يعني في أغلب الأحيان أن المدخلات لم تكن كما توقعت. تحقّق من هذه الأسباب بالترتيب:
- مدخلات مقتطعة. كثيرًا ما تقطع ملفات السجل والطرفيات وخلايا جداول البيانات وتطبيقات الدردشة السلاسل الطويلة. والنص الناقص في النهاية يعطي ملفًا أقصر من اللازم، فترفض معظم الصيغ فتحه. وإذا كنت تعرف الحجم الأصلي، فقارنه بالحجم بعد فك الترميز.
- أحرف زائدة. علامات الاقتباس أو الفواصل أو اسم الحقل المنسوخ مع القيمة، أو تسلسلات الهروب مثل
\/و\nالقادمة من سلسلة JSON، ليست جزءًا من Base64. انسخ القيمة نفسها فقط. - ترميز أو نوع مختلف. قد يبدو الترميز الست عشري أو Base32 أو Base85 أو أبجدية مخصصة مشابهًا للوهلة الأولى، لكنه يتحول إلى بيانات عشوائية عند فك ترميزه كـ Base64. وتجرّب أداة اكتشاف الترميز كل أدوات فك الترميز وتعرض أيها يناسب.
- ليس ملفًا أصلًا. إذا اكتُشفت النتيجة على أنها نص عادي، فالسلسلة كانت Base64 لنص: JSON أو رمز مميز أو طبقة أخرى من Base64. اقرأها باستخدام أداة فك ترميز Base64، وفك ترميزها مرة أخرى إذا كانت المخرجات Base64 من جديد.
تسرد أداة التحقق من Base64 الأحرف غير الصالحة مع مواضعها وتبلّغ عن مشكلات الحشو، ما يساعد على تحديد الجزء التالف.
فك ترميز Base64 إلى ملف في الشيفرة البرمجية
# Python
import base64
with open('output.bin', 'wb') as f:
f.write(base64.b64decode(data))
// Node.js
fs.writeFileSync('output.bin', Buffer.from(data, 'base64'));
# Linux
base64 -d input.txt > output.bin
# macOS
base64 -D -i input.txt -o output.bin
# Windows PowerShell
[IO.File]::WriteAllBytes("C:\files\output.bin", [Convert]::FromBase64String((Get-Content input.txt -Raw)))
الأسئلة الشائعة
ما أنواع الملفات التي يمكن اكتشافها؟
الصيغ الشائعة ذات التوقيع الواضح: ملفات PDF، وأرشيفات ZIP وGZIP و7z وRAR؛ وصور PNG وJPEG وGIF وWebP وغيرها؛ والصوت بصيغ MP3 وWAV وOGG وFLAC وM4A؛ والفيديو بصيغتي MP4 وWebM؛ والخطوط WOFF وWOFF2 وTTF وOTF؛ وWebAssembly وغيرها. كما يُتعرّف على JSON وXML وHTML والنص العادي. أما الصيغ التي لا توقيع لها فلا يمكن تحديدها، لذا إذا كنت تعرف النوع الحقيقي، فأعد تسمية الملف بعد تنزيله.
لماذا اكتُشف ملف Word أو Excel على أنه ZIP؟
ملفات DOCX وXLSX وPPTX، مثل EPUB وJAR، هي أرشيفات ZIP ذات بنية مجلدات معيّنة في داخلها، وتبدأ بالبايتات السحرية نفسها التي يبدأ بها أي ملف ZIP. والبايتات الناتجة عن فك الترميز صحيحة: غيّر امتداد الملف المنزّل إلى .docx أو .xlsx أو أي امتداد تحتاجه، وسيُفتح بشكل طبيعي.
هل يمكنني لصق data URI؟
data:...;base64,، أو الصق جزء Base64 فقط. وفي الحالتين يُتحقق من النوع بالاستناد إلى البايتات الناتجة عن فك الترميز.لماذا يكون الملف بعد فك الترميز أصغر من نص Base64؟
يستخدم Base64 أربعة أحرف لكل 3 بايتات، لذا يبلغ حجم الملف نحو ثلاثة أرباع طول النص. وإذا كان أصغر بكثير من الملف الذي توقعته، فالمدخلات مقتطعة على الأرجح.
هل تُرسل بياناتي إلى أي مكان؟
لا. يجري فك الترميز واكتشاف النوع والمعاينة كلها في متصفحك، ويُنشأ الملف المنزّل على جهازك. ولا يُرفع أي شيء.