如何在表单提交后使用backbone.js的save()方法上传多个文件


How to Upload multiple files after form submit using backbone.js save() method?

我使用backbone作为java脚本框架。我有一个表单,我想在同一时间上传多达10个图像。我也给enctype="multipart/form-data"在表单标签和使用

<form id="myform" enctype="multipart/form-data" method="post">
   <input type="file" name="file1"/>
   <input type="file" name="file2"/>
</form>

在文件更改,我使用使用HTML5 FileReader()来读取文件。然后当我提交表单时,我想保存所有的表单数据。我必须把这些图片上传到"uploads/images"目录。正如我提到的,我使用的是主干,所以当我的表单提交时,我使用e.p preventdefault()防止页面重新加载。在那之后,

     var savemyForm = Backbone.View.extend(){
     id: '#form_id",
     events: {
             'submit' : 'save'
     }
     save : function (e){
             e.preventDefault();
             var newproject = new App.Models.Project;
              newproject.save({
               // I have to pass values here. But how can i pass values of files. 
               // And that files where I am passing from here should be 
               // moveable to my '/uploads/directory' using the 
               // move_upload_file($destination_path, $filename);
             });     
   });

您应该能够将包含文件的AJAX post从多部分表单发送到处理文件写入的服务器端脚本!使用jQuery是一件聪明的事情。表单插件,使您的文件上传也兼容IE。

  • http://malsup.com/jquery/form/

然后将表单发送到路由,并使用Laravel服务器端脚本处理它,如下所示:

public function create() {
   $file = Input::file('file');
   $file_upload = new FileUpload;
   $file_upload->name = Input::get('name');
   $file_upload->path = $this->settings['destination_folder'];
   $file_upload->extension = $file->getClientOriginalExtension();
   $file_upload->mimetype = $file->getMimeType();
   $file_upload->file_size = $file->getSize();
   if (exif_imagetype($file)) {
      list($width, $height) = getimagesize($file);
      $file_upload->dimensions = $width . " x " . $height;
   }
   $file_upload->save();
   $file->move($this->settings['destination_folder'], $file_upload->name);
}

这是我用来在Laravel中编写文件的代码片段。在您的情况下,您必须创建一些for循环来添加多个文件。

关于如何在Laravel中设置和使用RESTful控制器的一些信息:

  • http://code.tutsplus.com/tutorials/laravel 4 - a -开始- - - restful api更新-网- 29785
  • http://laravel.com/docs/controllers restful-controllers

我建议你先尝试成功上传一个文件,如果可行,再尝试多个。从一到多并不是火箭科学。div;)