【问题标题】:Inserts with Laravel 5.1 without page reloading使用 Laravel 5.1 插入,无需重新加载页面
【发布时间】:2015-11-21 19:31:26
【问题描述】:

我已经使用 Dropzone 好几天了,但遇到了一些问题。这个想法是:用户选择他的文件,它上传并进入他的文件目录,并且文件的一些属性(大小,名称)进入数据库。我不能这样做,因为当用户上传文件时,页面不会刷新,Input::file('file') 中没有任何内容。我就是做不到。这是我正在使用的代码:

class UploadController extends Controller {
    public function upload() {
        if(Input::hasFile('file')){
          $file = Input::file('file');
          $user = Auth::id();
          $file->move('uploads/'.$user, $file->getClientOriginalName());
        }
        else {
          echo 'Please select a file first'; 
        }    
     }

这是File.php模型中的两个函数

public function getFileId(){
    $fileName = Input::file('file')->getClientOriginalName();
    $files = File::where('filename', $fileName)->get(); //$fileName
    foreach ($files as $file) {
        $fileid = $file->fileid;
        echo $fileid.'<br>';
        Input::file('file')->fileid = $file->fileid; // put fileid as an attribute to the object file for futher usage  
    }       
}
public function incrementFileId(){
    $files = File::orderBy('fileid', 'desc')->take(1)->get();
    foreach($files as $file){
        echo $file->fileid + 1 .' incremented file id<br>';
    }
}

那么我的第三个模型函数应该如何上传文件的属性? DropZone 使用 Ajax,虽然我应该从那里获取文件属性,但可以这样做吗?!

【问题讨论】:

  • 您的具体问题是什么?文件没有正确保存,上传完成后是否需要刷新页面,还是需要在上传的文件中发送附加信息?

标签: php laravel insert dropzone.js


【解决方案1】:

使用Request 代替Input

    public function upload(Request $request)
    {
      if ($request->hasFile('file'))
      {
        $file = $request->file('file');
        $file->move('uploads/'.$user, $file->getClientOriginalName());
      }

【讨论】:

  • 使用请求没有任何变化
  • 我只需要一个模型来捕获和上传文件属性
  • 你检查过你的前端吗? Dropzone 是否正确配置并且它是否实际上传文件(使用上传按钮或 autoProcessQueue:true)?在后端它看起来不错,我使用相同的代码。
  • 只是想问一下:我的控制器使用 Input:: 和你的控制器使用 Request 有什么区别?
  • 好吧,看看这个没有区别。看到 Input 门面只是 \Illuminate\Http\Request 类的别名,增加了 get() 方法,这只是使用 Request::input() 获取值的另一种方式。 github.com/laravel/framework/blob/5.1/src/Illuminate/Support/…github.com/laravel/framework/blob/5.1/src/Illuminate/Support/…
猜你喜欢
  • 1970-01-01
  • 2016-04-28
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
  • 2016-12-26
  • 1970-01-01
  • 2018-03-09
相关资源
最近更新 更多