كيف أجبر الملفات على فتح في المتصفح بدلا من تحميل (PDF)؟


6 Answers

إذا كنت تستخدم HTML5 (وأعتقد الآن أن الجميع يستخدم ذلك) ، فهناك سمة تسمى download .

فمثلا،

<a href="somepathto.pdf" download="filename">

هنا filename هو اختياري ، ولكن إذا تم توفيره ، فسيأخذ هذا الاسم للملف الذي تم تنزيله.

Question

هل هناك طريقة لفرض ملفات PDF لفتحها في المتصفح عند إلغاء تحديد الخيار "Display PDF in browser"؟

لقد حاولت استخدام علامة التضمين وإطار iframe ، ولكنها لا تعمل إلا عند تحديد هذا الخيار.

ماذا افعل؟




إذا كنت تستخدم CodeIgniter.

يرجى ضبط:

$htmlpdf -> Output($pdf_local_path, f); to $htmlpdf -> Output(); exit;



فيما يلي طريقة أخرى لفرض ملف لعرضه في المستعرض في PHP:

$extension = pathinfo($file_name, PATHINFO_EXTENSION);
$url = 'uploads/'.$file_name;
        echo '<html>'
                .header('Content-Type: application/'.$extension).'<br>'
                .header('Content-Disposition: inline; filename="'.$file_name.'"').'<br>'
                .'<body>'
                .'<object   style="overflow: hidden; height: 100%;
             width: 100%; position: absolute;" height="100%" width="100%" data="'.$url.'" type="application/'.$extension.'">
                    <embed src="'.$url.'" type="application/'.$extension.'" />
             </object>'
            .'</body>'
            . '</html>';



إذا كان لديك Apache ، فأضف هذا إلى ملف .htaccess :

<FilesMatch "\.(?i:pdf)$">
    ForceType application/octet-stream
    Header set Content-Disposition attachment
</FilesMatch>



إذا قمت بالارتباط بـ .PDF سيتم فتحه في المستعرض.
إذا تم إلغاء تحديد المربع ، فيجب أن يرتبط بـ .zip لفرض التنزيل.

إذا لم يكن .zip خيارًا ، فاستخدم headers في PHP لفرض التنزيل

header('Content-Type: application/force-download'); 
header('Content-Description: File Transfer'); 



هذا لـ ASP.NET MVC

في صفحة cshtml الخاصة بك:

<section>
    <h4><a href="@Url.Action("Download", "Document", new { id = @Model.GUID })"><i class="fa fa-download"></i> @Model.Name</a></h4>
    <object data="@Url.Action("View", "Document", new { id = @Model.GUID })" type="application/pdf" width="100%" height="800" class="col-md-12">
        <h2>Your browser does not support viewing PDFs, click on the link above to download the document.</h2>
    </object>
</section>

في وحدة التحكم الخاصة بك:

public ActionResult Download(Guid id)
    {
        if (id == Guid.Empty)
            return null;

        var model = GetModel(id);

        return File(model.FilePath, "application/pdf", model.FileName);
    }

public FileStreamResult View(Guid id)
    {
        if (id == Guid.Empty)
            return null;

        var model = GetModel(id);

        FileStream fs = new FileStream(model.FilePath, FileMode.Open, FileAccess.Read);

        return File(fs, "application/pdf");
    }



افتح downloads.php من rootfile.

ثم انتقل إلى السطر 186 وقم بتغييره إلى ما يلي:

        if(preg_match("/\.jpg|\.gif|\.png|\.jpeg/i", $name)){
            $mime = getimagesize($download_location);
            if(!empty($mime)) {
                header("Content-Type: {$mime['mime']}");
            }
        }
        elseif(preg_match("/\.pdf/i", $name)){
            header("Content-Type: application/force-download");
            header("Content-type: application/pdf");
            header("Content-Disposition: inline; filename=\"".$name."\";");
        }

        else{
            header("Content-Type: application/force-download");
            header("Content-type: application/octet-stream");
            header("Content-Disposition: attachment; filename=\"".$name."\";");
        }



Related