在Laravel中使用Ajax保存路径图像

时间:2015-11-12 04:17:01

标签: javascript php jquery ajax laravel

我可以保存表单中的所有数据varchar / text元素,但是我无法保存路径图像。

我的代码有什么问题?

让我们看看create.blade.php我可以保存var deadline的值,但我无法保存var path的值:

Form::open(array('url' => 'imagesLoker', 'files' => true))
    <form class="form-horizontal">
    <div class="box-body">
        <div class="form-group">
            {!!Form::label('Deadline Lowongan : ')!!}
            {!!Form::date('deadline',null,['id'=>'deadline','class'=>'form-control','placeholder'=>'Deadline Lowongan'])!!}
        </div>
        <div class="form-group">
            {!!Form::label('Image Lowongan : ')!!}
            {!!Form::file('path') !!}
        </div>
    </div><!-- /.box-body -->
</form>
{!!Form::close()!!}

这是我的控制器:

public function store(Request $request)
    {
        Lowongan::create($request->all());
        return "data all";
    }

这是我创建数据的Ajax:

$("#createLoker").click(function(){
    var datas = $('form').serializeArray();
    var route = "http://localhost:8000/lowongan";
    var token = $("#token").val();
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.post(route,{
        deadline: $("#deadline").val(),
        path: $("#path").val()
    }).done(function(result){
        console.log(result);
    });
});

我不知道在我的模态中设置解析数据很重要或不重要,但我只是把这段代码放在我的模态中:

class Lowongan extends Model
{
    protected $table = 'Lowongan';
    protected $fillable = ['path','deadline'];

    public function setPathAttribute($path){
        $this->attributes['path']  = Carbon::now()->second.$path->getClientOriginalName();
        $name = Carbon::now()->second.$path->getClientOriginalName();
        \Storage::disk('local')->put($name, \File::get($path));
    }
}

最后我设置目录以保存图像。这是在config/filesystem

中设置的
'disks' => [
        'local' => [
            'driver' => 'local',
            'root'   => public_path('imagesLoker'),
        ],

我可以保存数据截止日期但是没有图像:( ..如果有任何关于如何保存图像路径的想法,我会很高兴知道它。

2 个答案:

答案 0 :(得分:0)

在您的表单中,您必须在laravel like.

中允许文件上传选项
  .on('data', function (data) {
    if (data.size === 'a3') {
      this.pause(); // pause it
      var stream = this; // save 'this'
      ProductModel.findOne({ sku: data.sku }, function (err, product) {
        if (product !== null) {
          product.size = data.size;
          product.save();
          validProducts.push(product);
        }
        stream.resume(); //resume it
      });
    }
  });

检查laravel doc

的文件上传部分

希望有所帮助......

答案 1 :(得分:0)

请按照以下步骤操作

在视图中

{!!Form::file('path') !!}更改为{!!Form::file('file') !!}

在控制器

请注意我已将上传路径设置为root/public/uploads/文件夹

public function store(Request $request)
    {
        $file = Input::file('file');
        $path = '/uploads/';

        $newFileName = Carbon::now()->second.$file->getClientOriginalName(). '.' . $file->getClientOriginalExtension();

        // Move the uploaded file
        $upSuccess = $file->move(public_path() . $path, $newFileName);

        $result = file_exists(public_path() . $path . $newFileName);

        $fileData =[
            'fileType' => $file->getClientOriginalExtension(),
            'filePath' => substr($path, 1) . $newFileName
        ];

        Input::merge(array('path' => $fileData["filePath"]));

        Lowongan::create($request->all());
        return "data all";
    }