使用file_get_contents() 和multipart/form-data 上傳檔案
儘管使用CURL 上傳檔案很容易,但使用者可能會好奇是否file_get_contents() 可以使用http 流上下文執行此任務。
多部分內容類型對文件上傳提出了挑戰。它需要定義一個邊界來分隔上傳檔案中的每個部分。此邊界與內容正文中未包含的任何字串一樣,可以使用帶有 microtime(true) 的時間戳來產生。
定義邊界後,必須在 Content-Type 標頭中指定它。此外,還需要建構遵循HTTP規範的內容主體和發送的標頭。每個表單欄位名稱必須包含在 Content-Disposition 標頭中,以及檔案名稱和 Content-Type 標頭。
如果要上傳多個文件,則必須為每個文件重複生成 $content 字串的過程文件,相應地指定不同的 FORM_FIELD 值。
最後,可以使用 file_get_contents() 的 context 參數來建立流上下文。 context 參數中的 http 陣列配置方法 (POST)、標頭(包括具有多部分邊界的 Content-Type)和內容。
透過使用設定的上下文執行 file_get_contents(),檔案上傳就是啟動。值得注意的是,二進位檔案編碼是不必要的,因為 HTTP 可以有效處理二進位資料。
以上是file_get_contents() 可以使用 multipart/form-data 執行檔案上傳嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!