تحقق مما إذا كان من الممكن تنزيل الملف باستخدام دلفي
سؤال
تحقق مما إذا كان من الممكن تنزيل الملف باستخدام دلفي
يوم جيد ...لقد بدأت في دلفي وأقوم بإنشاء برنامج لتنزيل الملفات من HTTP ...
أنا استخدم:
IdHTTP.Get (URL FileDownload)
لكن برنامجي يظهر خطأ عندما لا يتمكن من تنزيل الملف ...
السابق: http://exemplo.com/ -> يولد خطأ
السابق: http://exemplo.com/meudownload.ts -> يجعل التحميل
أرغب في تصحيح هذا الخطأ، كيف يمكنني التحقق مما إذا كان من الممكن تنزيل الملف أو إذا تم خفضه ...
إستعملت EIdHTTPProtocolExeption
ولكن يتحقق فقط من خطأ HTML مثل:404، 300 ...وليس هذا ما أتمنى...
أود معرفة ما إذا كان بإمكانك تنزيل الملف، أو ما إذا كان يتم تنزيله ...
إذا حدث هذا سأقوم بتنزيل ملف آخر:
donw_1.ts، down_2.TS، down_3.TS ...ثم عندما يحصل على الأرشفة التي لا يمكن تنزيلها، لدي الجواب لإلغاء الحلقة ...
المحلول 3
غير قادر على حل المشكلة عن طريق إجراء فحص الرأس ...وتمكنت من حل المشكلة مع خطأ HTTP 404 ....حيث لم يكن هناك ملف لتنزيله، فإنه يولد هذا الخطأ EIdHTTPProtocolExeption ...تم حل المشكلة ....
نصائح أخرى
اصطياد EIdHTTPProtocolException
هو ما يجب أن تفعله.تذكر أن Indy مصمم خصيصًا للاستفادة من الاستثناءات للإبلاغ عن الأخطاء. EIdHTTPProtocolException
انا اعرض TIdHTTP
يقوم بالإبلاغ عن أخطاء خاصة بـ HTTP من الخادم (أي نوع آخر من الاستثناءات يعني أن المقبس أو RTL به مشكلة ويمكن إعادة محاولة طلب HTTP).إن مجرد حصولك على هذا الاستثناء يعني أن الخادم لم يتمكن من تسليم الملف كما هو مطلوب، لذا يجب عليك عادةً عدم إعادة المحاولة إلا إذا كنت تعلم أنه خطأ يمكن استرداده.التحقق من الاستثناء ErrorCode
يعد خيارًا اختياريًا، ولكنه متاح إذا كنت تريد حقًا التمييز بين أخطاء محددة.
إذا كنت تريد فقط معرفة ما إذا كان الملف موجودًا على الخادم، فاستخدم TIdHTTP.Head.تقوم هذه الوظيفة فقط بتنزيل الرؤوس التي سيتم إرجاعها من استدعاء Get المكافئ، ولكن ليس البيانات نفسها.يمكنك بعد ذلك التحقق من الرؤوس لمعرفة ما إذا كان الملف موجودًا وتحديد ما يجب فعله بعد ذلك.