【问题标题】:Unable to upload image in Laravel 7.x: ”C:\xampp\tmp\phpE0A1.tmp“ this error show in my database banner_photo column无法在 Laravel 7.x 中上传图片:“C:\xampp\tmp\phpE0A1.tmp” 此错误显示在我的数据库banner_photo 列中
【发布时间】:2020-09-09 11:12:28
【问题描述】:

我正在尝试将图像上传到 mysql 数据库中,但在banner_photo 字段“C:\xampp\tmp\phpE0A1.tmp”中,这个 .tmp 文件每次都会自动生成。请帮忙看看是什么问题,解决方法是什么!

我的 index.blade.php 文件

@extends('admin.layout.master')

@section('content')
<div class="container-scroller">
      <!-- partial:partials/_navbar.html -->
      @include('admin.layout.nav')

      <!-- partial -->
    <div class="container-fluid page-body-wrapper">
        <!-- partial:partials/_sidebar.html -->
        @include('admin.layout.sidebar')
        <!-- partial -->
        <div class="main-panel">
          <div class="content-wrapper">
            <!-- Page Title Header Starts-->
            <div class="row page-title-header">
              <div class="col-12">
                <div class="page-header">
                  <h4 class="page-title">Dashboard</h4>

                </div>
              </div>

            </div>
            <!-- Page Title Header Ends-->


            <div class="row">
              <div class="col-md-12">
                <div class="row">
                  <div class="col-md-12 grid-margin">
                    <div class="card">
                      <div class="card-body">
                        <div class="d-flex justify-content-between">
                          <h4 class="card-title mb-0">Banner</h4>
                          <a href="#"><small>Show All</small></a>
                        </div>
                        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est quod cupiditate esse fuga</p>
                        <div class="table-responsive">
                          <table class="table table-striped table-hover">
                            <thead>
                              <tr>
                                <th>ID</th>
                                <th>H4 Title</th>
                                <th>H2 Title</th>
                                <th>Paragraph</th>
                                <th>Image</th>
                                <th>Edit</th>
                                <th>Delete</th>
                              </tr>
                            </thead>
                            <tbody>
                              @foreach($banners as $row)
                              <tr>
                                <td>{{$row->id}}</td>
                                <td>{{$row->h4_title}}</td>
                                <td>{{$row->h2_title}}</td>
                                <td>{{$row->banner_paragraph}}</td>
                                <td>{{$row->banner_photo}}</td>
                                <td><button type="submit" class="btn btn-primary"><i class="fas fa-edit"></i>EDIT</button></td>
                                <td><button type="submit" class="btn btn-danger"><i class="far fa-trash-alt"></i>DELETE</button></td>
                              </tr>
                              @endforeach
                            </tbody>
                          </table>
                        </div>
                      </div>
                    </div>
                  </div>


                </div>
              </div>

            </div>

          </div>
          <!-- content-wrapper ends -->
          <!-- partial:partials/_footer.html -->
          @include('admin.layout.footer')
          <!-- partial -->
        </div>
        <!-- main-panel ends -->
    </div>
      <!-- page-body-wrapper ends -->
</div>
<!-- container-scroller -->

@endsection

我的 web.php 文件

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('index');
});

Route::get('/contact-us', function () {
    return view('contactus');
});

Route::get('/tours', function () {
    return view('tours');
});

// Admin panel Pages Routes

Route::get('/admin', function () {
    return view('admin/index');
});

Route::get('/admin/bannercustomize', function () {
    return view('admin/layout/bannercustomize');
});


// Controller routes

Route::post('store/banner','BannerController@store')->name('store.banner');

Route::get('/admin','BannerController@index')->name('admin.index');

我的 BannerController.php 文件

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Banner;
use Image;
use Illuminate\Support\Str;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;

class BannerController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {


        $banners = Banner::all();
        return view('admin.index',compact('banners'));
    }


    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('admin.layout.bannercustomize');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */


    public function store(Request $request)
    {
        $this->validate($request, [
            'h4_title' => 'required',
            'h2_title' => 'required',
            'banner_paragraph' => 'required',
            'banner_photo' => 'required'


        ]);

        $banner = new Banner([
            'h4_title' => $request->get('h4_title'),
            'h2_title' => $request->get('h2_title'),
            'banner_paragraph' => $request->get('banner_paragraph'),
            'banner_photo' => $request->file('banner_photo')

        ]);

        $request->banner_photo->store('public/image/banner_image/');

        $banner->save();

        return redirect()->back()->with('success', 'Data Added');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

注意:我使用的是 Laravel 7.x

【问题讨论】:

    标签: php laravel eloquent laravel-5.8 laravel-7


    【解决方案1】:

    当您上传文件时,php 会分配一个临时名称和位置(例如:C:\xampp\tmp\phpE0A1.tmp),直到您在某处找到它。

    通常你保存在数据库中的是文件的位置和名称,一旦它位于你的项目目录中

    所以,先把文件存起来,再把路径存入数据库:

    public function store(Request $request)
    {
        $this->validate($request, [
            'h4_title' => 'required',
            'h2_title' => 'required',
            'banner_paragraph' => 'required',
            'banner_photo' => 'required|file'
        ]);
    
        $path = $request->file('banner_photo')->store('public/image/banner_image');
    
        $banner = new Banner([
            'h4_title' => $request->get('h4_title'),
            'h2_title' => $request->get('h2_title'),
            'banner_paragraph' => $request->get('banner_paragraph'),
            'banner_photo' => $path
        ]);
    
        $banner->save();
    
        return redirect()->back()->with('success', 'Data Added');
    }
    

    或者,由于您将文件存储在public/存储目录中,您可以使用公共磁盘来存储文件:

    $path = $request->file('banner_photo')->store(
        'image/banner_image', 'public'
    );
    

    奖金

    您可以通过index.blade 表上的网址访问它:

    <table class="table table-striped table-hover">
    <thead>
        <tr>
        <th>ID</th>
        <th>H4 Title</th>
        <th>H2 Title</th>
        <th>Paragraph</th>
        <th>Image</th>
        <th>Edit</th>
        <th>Delete</th>
        </tr>
    </thead>
    <tbody>
        @foreach($banners as $row)
        <tr>
        <td>{{$row->id}}</td>
        <td>{{$row->h4_title}}</td>
        <td>{{$row->h2_title}}</td>
        <td>{{$row->banner_paragraph}}</td>
        <td><img src="{{ asset( Storage::url($row->banner_photo) ) }}" /></td>
        <td><button type="submit" class="btn btn-primary"><i class="fas fa-edit"></i>EDIT</button></td>
        <td><button type="submit" class="btn btn-danger"><i class="far fa-trash-alt"></i>DELETE</button></td>
        </tr>
        @endforeach
    </tbody>
    </table>
    

    注意:此外,您应该在指向storage/app/public 目录的public/storagecreate a symbolic link

    参考资料:

    文件存储File Uploads

    文件存储The Public Disk

    文件存储File URLs

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 2020-03-18
      • 2022-11-25
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      相关资源
      最近更新 更多