【问题标题】:Slash missing on laravel routelaravel路线上缺少斜线
【发布时间】:2018-04-22 14:46:45
【问题描述】:

如果我使用此选项功能上传 12345.jpg

Route::post('upload', function(){
      $options['upload_url'] = url('/images/');  
      $options['upload_dir'] = public_path().'/images/';
      $upload_handler = new App\Http\Controllers\UploadController($options);
 });

我得到的错误网址是

localhost:8000/public/images12345.jpg  miss the images/

如果我不使用上面的功能

Route::post('upload', function(){
      //$options['upload_url'] = url('/images/');  
      //$options['upload_dir'] = public_path().'/images/';
      $upload_handler = new App\Http\Controllers\UploadController();
 });

我得到了正确的路线(作为控制器默认)

localhost:8000/public/files/12345.jpg

上传控制器.php

 public function __construct($options = null, $initialize = true, $error_messages = null) {
        $this->response = array();
        $this->options = array(
            'script_url' => $this->get_full_url().'/'.$this->basename($this->get_server_var('SCRIPT_NAME')),
            'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',
            'upload_url' => $this->get_full_url().'/files/',

谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: php laravel class routes


    【解决方案1】:

    问题来自url() 方法,该方法使用UrlGenerator->to() 方法。此方法调用trim($path.'/'.$tail, '/') 来截断尾部斜线(see code reference)。

    所以你可能只使用url().'/images/ 而不是url('/images/')

    或者,作为更强大的替代方案

    在控制器中添加一个检查以确保尾部有斜线:

    if (substr($this->options['upload_url'], -1) !== '/') {
        $this->options['upload_url'] .= '/';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2020-07-07
      • 2020-06-04
      • 2016-08-18
      • 1970-01-01
      • 2016-05-07
      • 2021-11-06
      相关资源
      最近更新 更多