代码之家  ›  专栏  ›  技术社区  ›  Israel Lopez

将上传的文件发布到另一个PHP页面?

  •  1
  • Israel Lopez  · 技术社区  · 16 年前

    这是我的问题。我有一个不太“用户友好”的票证跟踪系统,但我希望我的用户在不让他们看到的情况下向系统提交“票证”。

    <?php
    extract($_POST);
    $url = 'TICKETSYSTEMURL';
    $fields = array(
            'fullname'=>urlencode($fullname),
            /*many more fields*/
            );
    
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string,'&');
    $ch = curl_init();
    
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    $contents = curl_exec($ch); 
    curl_close($ch);
    if((strlen(strstr($contents,'Your ticket has been submitted')))>0){
            header("Location: http://THANKYOU");
    }
            else{
                    header("Location: http://OOPS");
            }
    
    ?>
    

    我如何处理从我的用户HTTP表单接收文件,在“TicketPer”中处理该文件并将其发布到“TICKETSYSTEMURL”中?

    -以色列

    2 回复  |  直到 13 年前
        1
  •  1
  •   Dominic Barnes    16 年前

    PHP.net

    CURLOPT_infle |上传时应读取传输的文件。

    对于选项参数的以下值,值应为流资源(例如使用fopen()):

    fopen() 在已上载的文件上(请参阅有关 Handling File Uploads )我不确定,但你可能需要打电话 move_uploaded_file()

    例如:

    $ch = curl_init();
    
    $file = fopen($_FILES['file-field-name']['tmp_name'], 'r');
    
    // OTHER CURL CONFIGURATION
    curl_setopt($ch, CURLOPT_INFILE, $file);
    
    curl_exec($ch);
    
        2
  •  1
  •   bmb    16 年前

    首先,脚本可以通过$\u FILES数组访问上载的文件。

    从…起 http://www.tizag.com/phpT/fileupload.php

    $\u文件数组是PHP存储的位置 所有关于文件的信息。那里 这个数组的两个元素 例子。

    • uploadedfile-uploadedfile是我们在HTML中指定的引用 形式。我们需要这个来告诉大家 $\u文件数组我们要选择哪个文件 玩弄。
    • $\u文件['uploadedfile']['tmp\u名称']- tmp_名称包含到 服务器。该文件应存在于服务器上 临时名称。

    要在使用libcurl发送的帖子中包含此文件,请使用字段数组而不是字符串。将文件包含为以下字段之一:

    $post_fields = array (
        $key => $value,
        ...
        $file_key => "@" . $filename,
    );
    

    如果使用“@”符号,libcurl将读取文件并将其包含在文章中。

    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);