2013-07-23 76 views
3

有沒有辦法將一個base64圖像字符串添加到$_FILES數組(您上傳文件時獲得的數組)?基本上,我想僞造base64字符串的文件上傳。 base64字符串來自電子郵件附件。我不希望使用file_get_contents(),因爲我想將圖像作爲二進制圖像保存在數據庫中。我不需要上傳,但我確實需要它是$_FILES陣列的一部分。

+0

你在哪裏有base64字符串?在客戶端在JavaScript? – jcsanyi

+0

請提供更多的上下文 - 誰在上傳文件? – jcsanyi

+0

base64字符串來自電子郵件附件。所以PHP。 @jcsanyi –

回答

4

上傳是一種將文件內容從客戶端(通常是網頁瀏覽器)發送到服務器的方式。這聽起來像你已經得到了你需要的服務器上的數據(用PHP),所以你不需要上傳它。

  1. 您可以使用base64_decode()將其從base64轉換爲直接文件內容。

  2. 如果你需要它作爲你的服務器上的文件,你可以使用像file_put_contents()這樣的東西將它保存爲一個新的文件。

  3. 如果您嘗試使用$_FILE陣列中上傳的文件執行其他操作,請提供更多詳細信息。不管它是什麼,你都不需要真正上傳文件。


$_FILES陣列實際上並不包含該文件的內容 - 它包含其中的內容已保存的文件名。

如果你必須使用$_FILES陣列(以便重新使用現有的類,例如),你需要使用file_put_contents()保存一個新的臨時文件,然後手動添加一個條目的$_FILES陣列指向該臨時文件(就像修改任何其他數組一樣)。完成後不要忘記刪除臨時文件 - 這通常由PHP自動處理,但如果您手動創建文件,則必須手動刪除它。

儘管我強烈建議重構或爲您的課程提供替代接口。您不應該假裝該文件已上傳,只是將其保存到數據庫中。

+0

就像我說的,我不希望它file_put_contents ...因爲我需要它「上傳」到數據庫,而不是在base64中。所以我去解碼,所以它在二進制/圖像。我希望它在$ _FILES數組中。 –

+0

'$ _FILES'數組,也沒有上傳與數據庫有任何關係。 '$ _FILES'數組只是一種訪問從瀏覽器發送給您的文件內容的方式。你已經獲得了文件的內容,所以你不需要'$ _FILES'數組。 – jcsanyi

+0

我建立了一個php類,它將$ _FILES數組中的文件添加到數據庫中,它創建一個哈希,等等。我知道我不需要它,我只是想''_FILES'數組 –

相關問題