2016-08-12 81 views
2

直到今天,我一直在使用以下腳本,沒有任何問題。我改變了我的Linux的發行版,我不知道如果這是有關不使用curl和php腳本上傳圖片和文字

 $full = realpath($newPath."/".$image); 
    $data = array('name' => $name, 'pic' => '@'.$full.";type=image/jpeg"); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data")); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    $contents = curl_exec($ch); 

我張貼通過PHP的形式的信息,但我不能像提交由於它沒有被檢測爲一個圖像,它被檢測爲「application/octet-stream」

如何指定內容類型爲圖像並提交文本?

P.D.我檢查了我之前問過的類似問題,我剛剛找到一個與確切的purpouse,並沒有任何答覆。我並非試圖下載任何圖像,我試圖用幾個文本字段填寫表單,我應該通過相同的表單上傳圖像

+0

不,這不是重複,因爲我的紫袍是不同的。我正在嘗試上傳圖片和文字,並且該人試圖下載@MaxZoom –

+0

您使用了哪些版本的PHP? (舊的和新的) – Dekel

+0

Uhm,我正在使用PHP 7.0.9(cli)(built:Jul 20 2016 17:12:28)(NTS) Copyright(c)1997-2016 PHP Group Zend Engine v3.0.0,Zend Technologies版權所有(c)1998-2016,我知道我用php v5測試了這個腳本,可能它的原因不能正常工作......不是嗎? @Dekel –

回答

1

好的,所以我找到了問題。你需要使用CurlFile()類,而不是'@'。 $ file_name示例。

文檔:http://php.net/manual/en/class.curlfile.php

而不是

$postfields['file_contents'] = '@' . $filename; 

你要做到這一點

$postfields['file_contents'] = new CurlFile($filename); 

你可以看一下的文檔的另一端指定MIME類型和名稱在構造函數中,但這是它的基本要點。

祝你好運!

+0

我應該補充說這個方法應該用於PHP 5.5+(包括PHP 7)! – TonyTheJet

+1

感謝您的回答!它幫助了我! :) –