【问题标题】:Cannot output image in Laravel5.2 view无法在 Laravel5.2 视图中输出图像
【发布时间】:2016-09-08 21:10:47
【问题描述】:

我正在尝试在 DIV 中输出图像,例如:

<div style="background-image:url('{{ asset($radioProg->image)}}');

即使 img 似乎已正确上传到我的上传文件夹中并且我可以在我的数据库中看到它,但我仍然无法在我的视图中看到它!有什么帮助吗?

这是我的 RadioController.php

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'day' => 'required',
        'time' => 'required',
        'intro' => 'required',
        'link_streaming' => 'required',
        'image' => 'required|image|max:2000'
        ]);

    $radioProg = new RadioProg;
    $radioProg->name = $request->name;
    $radioProg->day = $request->day;
    $radioProg->time = $request->time;
    $radioProg->intro = $request->intro;
    $radioProg->link_streaming = $request->link_streaming;

    if ($request->hasFile('image')) {
        if ($request->file('image')->isValid()) {

            $img_name = $request->file('image')->getClientOriginalName();
            $temp_file = base_path() . 'uploads/radio_programs' . $img_name;
            $radioProg->image = $request->file('image')->move('uploads/radio_programs', $img_name);
        }
    }

    $radioProg->save();

    Session::flash('success', 'Tu nuevo programa de radio ha sido guardado correctamente!');

    return redirect()->route('admin.radio.index', [$radioProg->id]);
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    $radioProg = RadioProg::find($id);
    return view('radio.show')->with('radioProg', $radioProg);
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{   
    $radioProg = RadioProg::find($id);
    return view('radio.edit')->with('radioProg', $radioProg);
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    $radioProg = RadioProg::find($id);
    $this->validate($request, [
        'name' => 'required',
        'day' => 'required',
        'time' => 'required',
        'intro' => 'required',
        'link_streaming' => 'required',
        'image' => 'required|image|max:2000'
        ]);

    $radioProg->name = $request->input('name');
    $radioProg->day = $request->input('day');
    $radioProg->time = $request->input('time');
    $radioProg->intro = $request->input('intro');
    $radioProg->link_streaming = $request->input('link_streaming');

    if ($request->hasFile('image')) {
        if ($request->file('image')->isValid()) {

            $img_name = $request->file('image')->getClientOriginalName();
            $temp_file = base_path() . 'uploads/radio_programs' . $img_name;
            $radioProg->image = $request->file('image')->move('uploads/radio_programs', $img_name);

        }
    }


    $radioProg->save();

    Session::flash('success', 'Tu programa de radio ha sido modificado con éxito!');

    return redirect()->route('admin.radio.index', [$radioProg->id]);

}

这是我的观点:

<div class="row radio-programs">
    @foreach($radioProgs as $radioProg)
    <div class="col-md-4 {{ count($radioProgs) === 1 ? "col-md-offset-4" :""}} col-program">
        <div class="panel panel-default panel-program" style="background-image:url('{{ asset($radioProg->image)}}'); background-position: center; background-size: cover;-webkit-background-size: cover; -moz-background-size: cover;-o-background-size: cover;">
            <div class="panel-body">
                <div class="row">
                    <div class="col-md-12 col-inOverlay">
                        <h3 class="text-center"><span>{{$radioProg->name}}</span></h3>
                        <h4><span>Día: todos los {{$radioProg->day}} </span></h4>
                        <h4><span>Hora: {{$radioProg->time}} </span></h4>
                        <hr>
                        <div class="row button-program">
                            <div class="col-md-10 col-md-offset-1 col-button-program">
                                <a href="{{url('radioProgram')}}" type="button" class="btn btn-danger btn-block">Entrar</a>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    @endforeach
</div>

在 Chrome 中我实际上看到了正确的路径!

<div class="panel panel-default panel-program" style="background-image:url('http://localhost:8000/uploads/radio_programs\administrador_consorcio_300115.png'); background-position: center; background-size: cover;-webkit-background-size: cover; -moz-background-size: cover;-o-background-size: cover;">

【问题讨论】:

  • 为什么“radio_programs”和“administrador_consorcio_300115.png”之间有一个“\”
  • radio_programs 是上传文件夹内的子文件夹...实际上是图片所在的位置
  • 它不应该是一个“/”吗?
  • 浏览器自动修复它...它会处理它;-) 问题似乎是我在
    中使用 css 属性,而不是 标签
  • 请尝试删除 url:() ... &lt;div class="panel panel-default panel-program" style="background-image:url(http://localhost:8000/uploads/radio_programs\administrador_consorcio_300115.png); background-position: center; background-size: cover;-webkit-background-size: cover; -moz-background-size: cover;-o-background-size: cover;"&gt; 中的撇号 '

标签: php css laravel view blade


【解决方案1】:

这样的改变可能会奏效: 在 ({{) 之前添加 (../)

<div class="panel panel-default panel-program" style="background-image:url('../{{ asset($radioProg->image)}}'); background-position: center; background-size: cover;-webkit-background-size: cover; -moz-background-size: cover;-o-background-size: cover;">

【讨论】:

    【解决方案2】:

    回答您的问题不多,但要调试更多...

    你说:

    在 Chrome 中我实际上看到了正确的路径!

    您是否尝试过检查 chrome 中使用 background-image 样式规则的元素并查看它返回的图像?您甚至可以在新选项卡中打开图像。见图片:

    如果您仍然看不到它,我认为路径可能不正确。

    【讨论】:

    • 我做到了,是的,如果我在新标签中链接它,我可以看到它!很奇怪,不知道怎么办
    • 我猜这是样式 css 问题。尝试使用 Web 开发工具调试样式属性。看一下计算的背景属性。你看到了什么?
    • “计算”Bg Pr 是什么意思??
    • 看答案中图片中的第二个标签
    • 你试过玩规则了吗?尝试全部删除并一一应用。还可以尝试使用 background-size:cover 如果删除此规则会发生什么?
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签