كيف يتم اختيار اسم ملف التنزيل وهل هناك طريقة لتغييره؟

StackOverflow https://stackoverflow.com/questions/894298

  •  23-08-2019
  •  | 
  •  

سؤال

لدي رابط إلى ملف ليس على الخادم الخاص بي:

<a href="history.nasa.gov/monograph15b.pdf">NASA</a>

أرغب في تحقيق ذلك بحيث عند نقرات الزائر على الرابط لتنزيله، سيكون الاسم الذي منبثق عن ملفات PDF nasa.pdf، وليس monograph15b.pdf.

هل هذا ممكن بأي لغة؟

هل كانت مفيدة؟

المحلول

إذا كنت لن تستضيف الملف بنفسك، فقد تتمكن من القراءة في محتويات الملفات، ثم أرسل هذه المحتويات مباشرة إلى المتصفح مع الرؤوس المناسبة.

لاحظ أن هذا سيكون بطيئا لأنه سيتم إعادة تنزيل الملف من NASA في كل مرة يعمل فيها صفحة PHP.

<?php
$filename = "http://history.nasa.gov/monograph15b.pdf";
$outputfilename = "NASA.pdf";

header("Content-Type:  application/pdf");
header("Content-Disposition:  attachment; filename=\"" . basename($outputfilename) . "\";" );
header("Content-Transfer-Encoding:  binary");
readfile("$filename");
?>

يتطلب هذا النهج أيضا تكوين PHP بحيث FOPEN () يمكن التعامل مع قراءة ملف عبر HTTP.

نصائح أخرى

الطريقة الوحيدة للقيام بذلك حقا هي أولا قم بتنزيل الملف المعني في الخادم الخاص بك، اسمه كما يحلو لك، ثم خدمته احتياطيا للمستخدمين النهائيين.

انظر إلى رأس HTTP المحتوى التصرف رأس، سوف يسمح لك بتحديد اسم الملف.

تحتاج إلى استخدام أي تقنية جانب الخادم مثل ASP.NET. حيث وضعت في زر في الصفحة. عند النقر فوق الزر، ستقوم بإجراء المهام التالية.

1.) الاستجابة. الكلار ()؛

2.) الاستجابة .Addheader ("التصرف في المحتوى"، "المرفق؛ اسم الملف = nasa.pdf")؛

3.) Response.contenttype = "تطبيق / Octet-Stream"؛

4.) Response.writeFile (context.server.mappath ("history.nasa.gov/monograph15b.pdf"))؛ // تحتاج إلى تعيين المسار الصحيح بشكل حقيقي للتطبيق الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top