【问题标题】:Accessing multiple images stored in database as a filename but stored in public folder of laravel访问存储在数据库中的多个图像作为文件名但存储在 laravel 的公共文件夹中
【发布时间】:2017-03-02 18:33:54
【问题描述】:

我需要将多个图像作为数组上传,为此我设置了我的控制器,如下所示:

   namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Detail;

    class DetailController extends Controller
    {
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    //
    $data=Detail::all();
    return view('details.index',compact('data'));
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    //
    $data=Detail::all();
    return view('details.create',compact('data'));
}

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

  public function store(request $request) {
       $input=$request->all();
    if($files=$request->file('images')){
        foreach($files as $file){
        $name=$file->getClientOriginalName();
        $file->move('image',$name);

        $input['images']=$name;
    }
    }

  Detail::create($input);

    return redirect('/details');


    }

而我的路线是:

     Route::resource('/details','DetailController');

这样做我已经能够将选定的图像存储在公共文件夹中,即Public/image 中。但是只有一张图像像这样存储在数据库中。Database image。 如果存储在数据库中的选定图像中只有一个和其余的图像被公开存储,是否可以。如果没问题,那么我如何访问/显示显示页面中的所有图像。 谢谢。

【问题讨论】:

  • 我看不到插入查询的功能。
  • 不是模型自己做的吗?
  • @Amani 我有一个名为 Detail 的模型,如下所示:
  • 通常你必须把:Detail::create($input); 放在 foreach 循环中,因为你有多行,像这样:foreach($input as $row){ Detail::create($row); } 如果你想跳过循环,你可以简单地使用DB::table('Detail')->insert($input);
  • 使用DB类别忘了加use DB;

标签: php laravel-5


【解决方案1】:

你可以试试这个:

 public function store(request $request) {
    $input=$request->all();
    $images=array();
    if($files=$request->file('images')){
       foreach($files as $file){
          $name=$file->getClientOriginalName();
          $file->move('image',$name);
          $images[]=$name;
       }
    }
    /*Insert your data*/
 foreach($images as $image){
    Detail::insert( [
       'image1'=>  $image,
       'description' =>$input['description'],
       'price' =>$input['price'],
       'address' =>$input['address'],
       'location' =>$input['location']
    ]);
  }

    return redirect('/details');
 }

【讨论】:

  • 它抛出了这个错误:DetailController.php 第 87 行中的 ErrorException:试图获取非对象的属性
  • 在我的第 87 行我有这个:'description' =>$input->description,
  • 并且只是为了澄清上传的图像将超过三个或任何用户想要上传的内容。而且我的细节模型中只有一个属性/字段称为图像图像,如上所述。
  • 如果我做 dd($input);上传 8 张图片浏览器会给出这样的结果: array:8 [▼ "_token" => "vgX8xTaBpfucZoztVwwPOfcPgG5xa9nHQCreP0JD" "agentname" => "jhgf" "address" => "hgfg" "price" => "kjuytre" "description" => "fghjhgf" "location" => "ghjhgfdghj" "submit" => "Submit" "images" => array:8 [▼ 0 => UploadedFile {#172 ▶} 1 => UploadedFile {#173 ▶} 2 => UploadedFile {#174 ▶} 3 => UploadedFile {#175 ▶} 4 => UploadedFile {#176 ▶} 5 => UploadedFile {#177 ▶} 6 => UploadedFile {#178 ▶} 7 => UploadedFile {#179 ▶ } ] ]
猜你喜欢
  • 1970-01-01
  • 2021-09-08
  • 2020-02-27
  • 1970-01-01
  • 2016-07-02
  • 2014-02-03
  • 2017-07-22
  • 1970-01-01
  • 2017-06-22
相关资源
最近更新 更多