2016-05-29 7 views
1

次のコードでphpを使用してウェブサイトから画像をダウンロードしようとしています。PHPを使用して強制的に画像をダウンロードする

現在、ファイルをidendtifyしてダウンロードします。ダウンロードされたファイルは で、開かれておらず、破損していると表示されます。以下のコードの問題点は何ですか?

また、このページを自分のモバイルアプリに埋め込んでいます。モバイルアンドロイドデバイスでも機能します

<?php 
$file = "http://example.com/animals/1.jpg"; 
    // Parse Info/Get Extension 
    $fsize = filesize($file); 
    $path_parts = pathinfo($file); 
    $ext = strtolower($path_parts["extension"]); 

    // Determine Content Type 
    switch ($ext) 
    { 
     case "gif": $ctype="image/gif"; break; 
     case "png": $ctype="image/png"; break; 
     case "jpeg": 
     case "jpg": $ctype="image/jpg"; break; 
     default: die('Wrong Extension'); 
    } 

    header("Pragma: public"); // required 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Cache-Control: private", false); // required for certain browsers 
    header("Content-Type: $ctype"); 
    header("Content-Disposition: attachment; filename=\"Test".basename($file)."\";"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: " . $fsize); 
    ob_clean(); 
    flush(); 
    readfile($file); 
exit(); 
?> 

答えて

0

あなたはブラウザにデータストリームを送信する必要があります。

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); // change this will work for you. 
header('Content-Disposition: attachment; filename="'.basename($file).'"'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
readfile($file); 
exit; 
+0

返信ありがとうございます。私は与えられたコードで試しました。しかし、それでも画像が壊れているか、破損しているか、または大きすぎて開けることができないという同じことを示しています。 画像のサイズが若干小さくなっています。元の画像は9kbでしたが、ダウンロードされた画像は8kbでした。それが何か問題を引き起こしていますか? – user3391693

関連する問題