【问题标题】:change single file upload to multiple file upload in php在php中将单个文件上传更改为多个文件上传
【发布时间】:2012-11-01 16:17:01
【问题描述】:

谁能帮我将我的代码从上传单个文件更改为多个文件上传?我尝试了很多示例,但似乎无法使其正常工作。颂歌如下。

    <tr>
      <td>Add file:</td>
        <td><input  type="file" name="cv" size="chars" class="Form" />             
     </td> 
    </tr>

    <?php
    include("lib/xmlrpc.inc");
    include("settings.php");  
    include("header.php"); 


$post = $_POST;


    $client = new xmlrpc_client($serverUri.'common');

    $msg = new xmlrpcmsg('login');
    $msg->addParam(new xmlrpcval($db, "string"));
    $msg->addParam(new xmlrpcval($user, "string"));
    $msg->addParam(new xmlrpcval($password, "string"));


    $res =  &$client->send($msg);

    if(!$res->faultCode()){

        $val = $res->value();   
        $id = $val->scalarval();

        if (empty($id)){

            echo "Connection error = ";
            exit;
        }
        else
        {

            $client2 = new xmlrpc_client($serverUri.'object');

            $val = array ("name" => new xmlrpcval($post['subject'],"string"),
                          "email_from" => new xmlrpcval($post['email'], "string"),
                          "partner_name" => new xmlrpcval($post['name'], "string"),
                          "partner_phone" => new xmlrpcval($post['phone'], "string"),
                          "description" => new xmlrpcval($post['letter'], "string"),
                          "job_id" => new xmlrpcval($post['jobid'], "int")
                        );

            $msg = new xmlrpcmsg('execute');
            $msg->addParam(new xmlrpcval($db, "string"));
            $msg->addParam(new xmlrpcval($id, "int"));
            $msg->addParam(new xmlrpcval($password, "string"));
            $msg->addParam(new xmlrpcval("hr.applicant", "string"));
            $msg->addParam(new xmlrpcval("create", "string"));
            $msg->addParam(new xmlrpcval($val, "struct"));


            $res2 = &$client2->send($msg);

            if(!$res2->faultCode())
            {
                $val2 = $res2->value()->scalarval();

                $tmp_name = $_FILES['cv']['tmp_name'];
        $file_name = $_FILES['cv']['name'];

                if(file_exists($tmp_name))
                {
                    // open the file for a binary read
                    $file = fopen($tmp_name,'rb');
                    // read the file content into a variable
                    $data = fread($file,filesize($tmp_name));
                    // close the file
                    fclose($file);

                    // now we encode it and split it into acceptable length lines
                    $encodedFile = base64_encode($data);   

                    $valFile = array ("name" => new xmlrpcval($file_name,"string"),
                                  "datas" => new xmlrpcval($encodedFile, "string"),
                                  "datas_fname" => new xmlrpcval($file_name, "string"),
                                  "index_content" => new xmlrpcval("true", "string"),
                                  "res_model" => new xmlrpcval("hr.applicant", "string"),
                                  "res_id" => new xmlrpcval($val2, "int"),
                                );

                    $msgFile = new xmlrpcmsg('execute');
                    $msgFile->addParam(new xmlrpcval($db, "string"));
                    $msgFile->addParam(new xmlrpcval($id, "int"));
                    $msgFile->addParam(new xmlrpcval($password, "string"));
                    $msgFile->addParam(new xmlrpcval("ir.attachment", "string"));
                    $msgFile->addParam(new xmlrpcval("create", "string"));
                    $msgFile->addParam(new xmlrpcval($valFile, "struct"));                                    

                    $res2File = &$client2->send($msgFile);
                }

                echo 'Thanks for applying, Files (name of file to be added) are uploaded.<br />';
                echo '<a href="index.php">Back to start</a><br />';

            }
            else
            {
                echo "<br />Problem in message sending for create application";

            }
        }           
    }
    else
    {
        echo "<br />Connection not established";
    }

include("footer.php");
?>

 <input name="cv" type="file" size="chars" class="Form" />

【问题讨论】:

  • 您似乎忘记在问题中包含您的代码。
  • 是的,我现在刚刚添加,但有点梨形。
  • 你尝试过什么转换?什么没试过?
  • 我尝试了一些我发现的例子,比如使用 Foreach()。可能更多是因为我缺乏知识。我基本上想使用一个提交按钮一次添加多个文件。
  • 我投票决定在您的代码出现之前结束您的问题。一旦您投票关闭,就无法撤消它;但我已经提名这个重新开放。另外,你在哪里声明你是这个论坛的新手?

标签: php post xml-rpc openerp


【解决方案1】:

试试这个

<!-- IMPORTANT:  FORM's enctype must be "multipart/form-data" -->
<form action="upload-handler.php.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="userfile1" type="file" /><br />
  <input name="userfile2" type="file" /><br />
  <input type="submit" value="Send files" />
</form>

<?php foreach ($_FILES as $file) { ... }

或者,如果您尝试从单个输入中获取多个文件。

<!-- IMPORTANT:  FORM's enctype must be "multipart/form-data" -->
<form method="post" action="upload-handler.php" enctype="multipart/form-data">
  <input name="userfiles[]" id="userfiles" type="file" multiple="" />
</form>

<?php foreach ($_FILES as $file) { ... }

【讨论】:

  • 我遇到的问题是 foreach() 函数。你有一个工作的例子吗?我尝试了您建议的两种方式,但仍然只能加载一个文件。
  • 您可以运行var_export($_FILES); die; 并发布结果吗?你确定这是包裹在表单元素中的吗?
  • 我不知道如何运行 var_export($_FILES);die;我在哪里添加此代码?表格在另一个文件中。如果你愿意,我可以尝试上传它
  • 这是我添加时得到的 var_export($_FILES);数组('cv' => 数组('name' => 'hotsaucepepperpalace.gif', 'type' => 'image/gif', 'tmp_name' => 'C:\\wamp\\tmp\\php5A54.tmp ', 'error' => 0, 'size' => 8241, ), ) 感谢您的申请 返回开始。
  • 现在好像不是上传倍数,你是选择多个文件上传吗?你的 foreach 不工作的原因是它现在没有倍数可以工作。
【解决方案2】:
$handle = fopen('D:\wamp\www\splite\uploads\hard bounce 10.txt','r'); 
        $f = 1; //new file number
        while(!feof($handle))
        {
            $newfile = fopen('D:/wamp/www/splite/batches/'.$f.'txt','w'); //create new file to write to with file number
            for($i = 1; $i <= 5000; $i++) //for 5000 lines
            {
                $import = fgets($handle);
                print_r($import);
                fwrite($newfile,$import);
                if(feof($handle))
                {break;} //If file ends, break loop
            }
            fclose($newfile);
            //MySQL newfile insertion stuff goes here
            $f++; //Increment newfile number
        }
        fclose($handle);`enter code here`

【讨论】:

    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 2018-01-26
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多