我使用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.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 帖子从多部分表单发送到处理文件写入的服务器端脚本!使用 jQuery.forms 插件是明智之举,因此您的文件上传也兼容 IE。
然后将您的表单发布到路由并使用 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 Controller 的一些信息:
- http://code.tutsplus.com/tutorials/laravel-4-a-start-at-a-restful-api-updated--net-29785
- http://laravel.com/docs/controllers#restful-controllers
我建议您首先尝试成功上传一个文件,如果成功,请尝试多个。从一到多并不是火箭科学。 ;)
关于javascript - 如何使用backbone.js save()方法在表单提交后上传多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23442632/