2

簡単な画像のアップロードに問題があります。画像のサイズ変更機能を追加すると不明なエラーが発生した場合にのみ、アップロード部分が個別に完全に機能することをすでに試しました。

public function post_add_image()
  {
    \Upload::process(array(
        'path'        => '../images/',
        'normalize'   => true,
        'change_case' => 'lower',
        'randomize'   => true,
        'ext_whitelist' => array('jpeg', 'jpg', 'gif', 'png'),
        'max_size'    => 1024 * 1024,

    ));

    if (!\Upload::is_valid()) {
      return $this->response(\Upload::get_errors());
    } else {
      foreach (\Upload::get_files() as $file) {

        // Here comes ERROR
        $image = Image::load($file['file'], false, $file['extension']);
        $image->crop_resize(800, 600);
        $image->save('test');

      }
    }

    //\Upload::save();

    return $this->response(\Upload::get_files());
  }

そしてエラー:

RuntimeException [エラー]:ライブラリは/ tmp/phpOnZReSのこのファイルタイプをサポートしていません。

COREPATH / classes / image / driver.php @ line

そして、アップロードしたファイルのvar_dumpを作成しました。

array(10) {
  ["name"]=>
  string(27) "crunchbang-logo-minimal.png"
  ["type"]=>
  string(9) "image/png"
  ["error"]=>
  bool(false)
  ["size"]=>
  int(278)
  ["field"]=>
  string(10) "pictures:0"
  ["file"]=>
  string(14) "/tmp/phpDdTLwJ"
  ["errors"]=>
  array(0) {
  }
  ["extension"]=>
  string(3) "png"
  ["filename"]=>
  string(23) "crunchbang-logo-minimal"
  ["mimetype"]=>
  string(9) "image/png"
}
4

2 に答える 2

1

これは役に立ちます(ファイルのサイズを変更する前に、パブリックアセットまたは必要な場所に画像ファイルを保存する必要があります)

public function post_add_image()
{
    \Upload::process(array(
    'path'        => '../images/',
    'normalize'   => true,
    'change_case' => 'lower',
    'randomize'   => true,
    'ext_whitelist' => array('jpeg', 'jpg', 'gif', 'png'),
    'max_size'    => 1024 * 1024,

    ));

   if (!\Upload::is_valid()) {
       return $this->response(\Upload::get_errors());
   } else {

       // Here comes the fix

       Upload::save();
       $saved_image = Upload::get_files();
       $original_name = $saved_image[0]['name'];
       $file_name = $saved_image[0]['saved_as'];  

       $public_asset_path_img = "assets".DS."img";

       $image = Image::load(DOCROOT.$public_asset_path_img.DS.$file_name, false, $file['extension']);
       $image->resize('800');
       $image->save(DOCROOT.$public_asset_path_img.DS.$file_name);


   }

   return $this->response(\Upload::get_files());
}
于 2015-01-30T04:33:18.367 に答える
0

Upload::save()画像のサイズを変更しようとした後に呼び出すことに問題があると思います。アップロードされたファイルは PHP tmp フォルダーに配置されるため、/tmp/phpOnZReS.

ループUpload::save()の直前に移動してみて、それが役立つかどうかを確認してください。foreach (\Upload::get_files() as $file)

于 2013-04-25T14:44:31.137 に答える