私はajax(旧式のJqueryではなく)を介して複数のファイルをアップロードしています。私は実際にそれが動作するように最終的に管理しました。問題は、システム/ライブラリ/アップロードファイルの行をコメントアウトする必要がありました。これは、問題を修正する推奨方法のようには聞こえません。CodeIgniter 3サポートされていないオペランドタイプin ...システム/ライブラリ/ Upload.php on line 496
行をコメント解除して、upload-> display_errors()を出力すると、Unsupported operand types in...system/libraries/Upload.php on line 496
というエラーメッセージが表示されます。システム/ライブラリ/アップロードの
ライン496は、次のとおりです。
// Convert the file size to kilobytes
if ($this->file_size > 0)
{
//$this->file_size = round($this->file_size/1024, 2);
}
:私はこのような行をコメントアウトした場合
// Convert the file size to kilobytes
if ($this->file_size > 0)
{
$this->file_size = round($this->file_size/1024, 2);// <- this line
}
は、私が正しく、エラーやファイルのアップロードを得ることはありませんこれは私の基本的なコントローラーで、 "Uploader"と呼ばれ、CIのLibrary-> Uploadと混同しないようにしました(このクラスをコピーし、何らかの理由で彼のクラスに "Upload"という名前を付けることにしました) "do_upload"は、CodeIgniterがそのuploaに使用する名前なので混乱しますdクラスとdo_upload関数)。あなたが見ることができるように、私は$の設定配列のMAX_SIZEパラメータをコメントアウト:
class Uploader extends CI_Controller {
function __construct()
{
parent::__construct();
}
private $data = array();
private $params = array();
public function index()
{
echo "This is the index!";
}
public function do_upload()
{
echo "<p>upload controller:</p>";
$config = $this->set_upload_options();
$this->load->library('upload',$config);
echo "<pre>";
print_r($_FILES);
$files = $_FILES;
$cpt = count($_FILES['photos']['name']);
$data = array();
$photos = "photos";
for($i=0; $i<$cpt; $i++)
{
$_FILES['photos']['name']= $files['photos']['name'][$i];
$_FILES['photos']['type']= $files['photos']['type'][$i];
$_FILES['photos']['tmp_name']= $files['photos']['tmp_name'][$i];
$_FILES['photos']['error']= $files['photos']['error'][$i];
$this->upload->initialize($config);
if (!$this->upload->do_upload($photos)) {
$error = array('error' => $this->upload->display_errors());
foreach($error as $err)
{
echo "<p>".$err."</p>";
}
}
}
$data['count'] = $i;
echo $data['count'];
return $data;
}
private function set_upload_options()
{
//upload an image options
$config = array();
$config['upload_path'] = FCPATH . 'assets_/images/assets/experimental/';
$config['allowed_types'] = 'gif|jpg|png';
//$config['max_size'] = '0';
$config['overwrite'] = TRUE;
return $config;
}
}
私はちょうど犬は嘘寝てみましょうべきでしょうか?あるいは、私はただ戻ってきて、私を噛んでしまう可能性のある問題をテーピングしていますか?
UPDATE: 出力に `ます$ this-> FILE_SIZE()のいくつかを試した後、私はそれが配列として渡されていた発見し、その自然配列は、オペランドにすることはできません。
今のところ、system-> libraries->アップロードファイル内のブロックif
をこれに変更しました。forループは、$ this-> file_size [$ i]の繰り返しに従って新しい$ this-> file_sizeを割り当てます。ループ。これが答えかもしれませんが、私は他の人が自分の質問に答える前に貢献するために待っています:問題が発生した理由を
// Convert the file size to kilobytes
if ($this->file_size > 0)
{
if(is_array($this->file_size)){
for($i=0;$i<count($this->file_size);$i++)
{
$this->file_size[$i] = round($this->file_size[$i]/1024, 2);
}
}else{
$this->file_size = round($this->file_size/1024, 2);
}
}