2011-08-02 57 views
0

我的目標是簡單地回顯$ _POST ['imageVar'];作爲一種快速和骯髒的手段來從閃存應用程序「導出」圖像的內容頭。我看到了這樣的一個例子如下,但它不與我的PHP版本/配置工作:如何在PHP中回顯原始發佈數據?

if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) 
{ 
    // get bytearray 
    $jpg = $GLOBALS["HTTP_RAW_POST_DATA"]; 

    // add headers for download dialog-box 
    header('Content-Type: image/jpeg'); 
    header("Content-Disposition: attachment; filename=".$_GET['name']); 
    echo $jpg; 
} 

因此,作爲一個工作,我周圍形成了一個腳本,將圖像保存到服務器,讀取圖像和回聲它回來,然後刪除圖像。我不喜歡這種方法,因爲我需要一個可由apache用戶寫入的目錄(im在共享服務器上)。有沒有辦法來完成我在這裏做什麼,而不需要使用臨時文件?

<? 
$fileName = basename($_FILES['uploadedfile']['name']); 
$tempFile = "uploads/" . $fileName; 
$fileSize = $HTTP_POST_FILES['uploadedfile']['size']; 
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $tempFile)) { 
        $fh = fopen($tempFile, 'r'); 
        $fileContents = fread($fh, $fileSize); 


        header('Content-Type: image/jpeg'); 
        header("Content-Disposition: attachment; filename=$fileName"); 
        echo $fileContents; 

        fclose($fh); 
        unlink($tempFile); 
} else { 
        echo "upload fail"; 
} 

?>

任何輸入或想法不勝感激!感謝您尋找

回答

2

你可以使用:

header('Content-Type: image/jpeg'); 
header("Content-Disposition: attachment; filename=$fileName") 
readfile($_FILES['uploadedfile']['tmp_name']); 

無需移動它,如果你不打算保留它。

在附註中,關於您正在查看的第一個解決方案,echo file_get_contents('php://input');不起作用嗎?

+0

感謝您的幫助!這很好! – Hoofamon

0
$s = file_get_contents('php://input'); 

// add headers for download dialog-box 
header('Content-Type: image/jpeg'); 
header("Content-Disposition: attachment; filename=".$_GET['name']); 
echo $s; 

那該怎麼辦?