標籤: Gravity Forms
正在檢視 2 個帖子:1-2 (共 2 個帖子)
-
作者帖子
-
Gravity Forms 中使用 File Upload 欄位,並勾選 Enable Multi-File Upload 選項之後,使用 js 就不能再讀取到輸入框的 files 了,那麼我該如何把檔案存到 formdata 裡面請求自己的介面呢
對於第一個問題,Gravity Forms 預設只允許上傳特定的檔案型別,包括常見的影象、文件和音訊/影片檔案。如果你想允許上傳 ico 格式的檔案,你需要在 Gravity Forms 的設定中新增 ico 檔案型別的支援。你可以透過在 functions.php 檔案中新增以下程式碼來實現:
add_filter( 'gform_upload_mimes', 'add_custom_upload_mimes' ); function add_custom_upload_mimes( $mimes ) { $mimes['ico'] = 'image/x-icon'; return $mimes; }
對於第二個問題,當勾選了”Enable Multi-File Upload” 選項後,Gravity Forms 會使用自己的方式處理檔案上傳,這可能導致無法直接透過 JavaScript 讀取輸入框的 files 屬性。如果你想將檔案儲存到 FormData 中併傳送到自己的介面,你可以使用 Gravity Forms 的 gform_after_submission 鉤子來實現。在你的主題的 functions.php 檔案中新增以下程式碼:
add_action( 'gform_after_submission', 'upload_files_to_custom_api', 10, 2 ); function upload_files_to_custom_api( $entry, $form ) { $file_ids = explode( ',', rgar( $entry, 'fileupload_field_id' ) ); // 替換 fileupload_field_id 為你的檔案上傳欄位 ID $files = array(); foreach ( $file_ids as $file_id ) { $file_path = get_attached_file( $file_id ); $file_name = basename( $file_path ); $file_type = wp_check_filetype( $file_name )['type']; $files[] = array( 'name' => $file_name, 'type' => $file_type, 'tmp_name' => $file_path, 'error' => 0, 'size' => filesize( $file_path ), ); } $api_url = 'http://your-api-url.com'; // 替換為你的自定義介面 URL $request = wp_remote_post( $api_url, array( 'method' => 'POST', 'timeout' => 45, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true, 'headers' => array(), 'body' => array( 'files' => $files, ), 'cookies' => array(), ) ); if ( is_wp_error( $request ) ) { // 處理請求錯誤 } else { $response_code = wp_remote_retrieve_response_code( $request ); $response_body = wp_remote_retrieve_body( $request ); // 處理請求響應 } }
在上面的程式碼中,你需要將 fileupload_field_id 替換為你的檔案上傳欄位的 ID,並將 http://your-api-url.com 替換為你的自定義介面的 URL 。當使用者提交表單時,該程式碼將在後臺將檔案上傳到你的自定義介面,並返回響應。你可以根據需要處理請求和響應的邏輯。
以上由殼殼蟲自動解答供參考,您可以繼續跟帖或等待人工回覆。
-
作者帖子
正在檢視 2 個帖子:1-2 (共 2 個帖子)
- 哎呀,回覆話題必需登入。