2016-04-24 19 views
0

データベースから保存した画像を表示すると、Webページには空の四角形だけが表示されます。 (スクリーンショットを参照)。ダウンロードしても、画像は表示されずに開きます。 (私は、ダウンロードした画像部分を動作していないためSOで別のポストを公開しているphpがダウンロードして画像を表示しても動作しません

enter image description here

私のコード;

  $query = "SELECT Id,Name,Type,SizeMB FROM Upload"; // Good practice. Do not process much data here. leave Content field 
     $result = mysqli_query ($con, $query) or die ("Couldn't execute SELECT query: ". mysqli_error($con)); 
     $nrows = mysqli_num_rows($result); 
     echo '<table> 
        <tr> 
         <td>Id</td> 
         <td>Name</td> 
         <td>Type</td> 
         <td>Size (MB)</td> 
        </tr>'; 
     $selfpg = $_SERVER['PHP_SELF']; 
     while($row = mysqli_fetch_assoc($result)){ 
      extract($row); 
      echo "<tr> 
         <td>$Id</td> 
         <td>$Name</td> 
         <td>$Type</td> 
         <td>$SizeMB</td> 
         <td> <a href='$selfpg?id=$Id'> Download </a> </td> 
        </tr>";  
     } 
     echo '</table>'; 

     //---------------------------------------------------------------------- 
     if (isset($_GET['id'])){ 

      $result_id = "SELECT Content FROM Upload WHERE Id=". $_GET['id']; 

      $row = mysqli_fetch_assoc($result_id); 
      extract($row); 
      $size_bytes = $SizeMB * 1024 * 1024; 
      /* When displaying the image on the webpage "Content-Type" is enough */ 
      header("Content-type: ". $Type); 


      //header("Content-Length: ". $size_bytes); 
      //header("Content-Disposition: attachment; filename= ". $Name); 

      echo $Content; 
     } 
     else{ 
      echo "<br>No id received to download a file</br>"; 
     } 

UPDATE !!! - http://s000.tinyupload.com/index.php?file_id=88155436688298142745

SQL で自分のコードをダウンロードしてください。
+3

エラーが報告されていますか?ヘッダーを変更する前にコンテンツをエコーし​​ています。その結果、エラーになる – Terminus

+1

ここをクリックhttp://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php – Terminus

+1

おそらくヘッダーコールの上にエコーが問題を引き起こしている、出力が開始されたら、ヘッダーを設定することはできません。おそらく、イメージファイルにそのHTMLを置いているかもしれません。イメージファイルを破壊してしまいます。イメージのダウンロードは分離して、ページ上の非表示のiframeで行う必要があります。 – ArtisticPhoenix

答えて

2

私のコメントで述べたように、出力を開始するとヘッダーは変更できません。

画像を表示する場合は、画像タグのsrc=""属性に画像データを置いてください。

ダウンロードした場合、iframeのsrcがダウンロードしたphpスクリプトの場所で、ページに表示されていないiframeに出力することができます(正しいヘッダー付き)。

JavaScriptを使用してiframeをページに追加することで、ダウンロードを開始することもできます。ターゲットがiframeのidに設定されたフォームを使用し、アクションがダウンロードスクリプトの場所を使用することにより、

乾杯。

関連する問題