You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CF7中获取上传文件URL并通过PHP写入FTP的TXT文件

解决Contact Form 7上传文件URL获取问题
  • 核心原因:CF7的$data数组中,上传字段存储的是临时文件名/表单提交的原始文件名,并非文件的永久访问URL。需要通过CF7的表单提交实例对象获取上传文件的实际存储路径,再转换为可访问的URL。

  • 实现步骤:

    1. 在wpcf7_before_send_mail钩子中,获取CF7的提交实例WPCF7_Submission。
    2. 通过实例的uploaded_files()方法,提取对应字段的上传文件服务器路径。
    3. 用wp_get_upload_dir()将服务器路径转换为站点可访问的URL。
    4. 将URL与其他字段内容拼接后写入TXT文件。
  • 示例代码:

add_action( 'wpcf7_before_send_mail', 'cf7_save_data_to_ftp_txt' );
function cf7_save_data_to_ftp_txt( $contact_form ) {
    // 获取表单提交实例
    $submission = WPCF7_Submission::get_instance();
    if ( ! $submission ) return;

    $data = $submission->get_posted_data();
    $uploaded_files = $submission->uploaded_files(); // 获取所有上传文件的路径数组

    // 处理目标上传字段(file-799)
    $file_url = '';
    if ( isset( $uploaded_files['file-799'] ) && ! empty( $uploaded_files['file-799'] ) ) {
        $file_path = $uploaded_files['file-799'];
        // 转换服务器路径为站点URL
        $upload_dir = wp_get_upload_dir();
        $file_url = str_replace( $upload_dir['basedir'], $upload_dir['baseurl'], $file_path );
    }

    // 拼接要写入的内容(根据你的现有字段调整)
    $content = "姓名: " . $data['your-name'] . "\n";
    $content .= "邮箱: " . $data['your-email'] . "\n";
    $content .= "上传文件URL: " . $file_url . "\n";

    // 以下保留你原有的FTP写入逻辑即可
    $ftp_server = '你的FTP服务器地址';
    $ftp_user = 'FTP用户名';
    $ftp_pass = 'FTP密码';
    $remote_file = '/远程服务器存储路径/表单数据.txt';

    $conn_id = ftp_connect( $ftp_server );
    $login_result = ftp_login( $conn_id, $ftp_user, $ftp_pass );

    if ( $conn_id && $login_result ) {
        $temp_file = tmpfile();
        fwrite( $temp_file, $content );
        fseek( $temp_file, 0 );
        ftp_fput( $conn_id, $remote_file, $temp_file, FTP_ASCII );
        fclose( $temp_file );
        ftp_close( $conn_id );
    }
}
  • 注意事项:
    • 确保CF7后台已开启文件上传功能,并设置了允许的文件类型、大小限制。
    • 上传文件默认存储在wp-content/uploads/wpcf7_uploads/目录,uploaded_files()返回的是该文件的服务器绝对路径。
    • 如果需要追加写入而不是覆盖文件,需调整FTP写入逻辑,先读取远程文件内容再拼接新内容。

内容的提问来源于stack exchange,提问作者PierPaolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:42:45