我有一个Modal将图像上传到图库中:
<div id="imagesModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title"></h4>
</div>
<div class="modal-body">
<form name="imagesForm" id="addImages" class="form-horizontal dropzone" role="form" method="POST" action="{{ route('images.add') }}" enctype="multipart/form-data">
{{ csrf_field() }}
{{ method_field('POST') }}
</form>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
这是我的jquery脚本:
$( "#addImages" ).click(function(event) {
event.preventDefault();
save_method = 'add';
$('input[name=_method]').val('POST');
$('#imagesModal').modal("show");
$('#imagesForm')[0].reset();
$('.modal-title').text('Add Images')
});
Dropzone.options.addImages = {
paramName: "images", // The name that will be used to transfer the file
maxFilesize: 2, // MB
};
and i already add the route and the function
public function store(Request $request)
{
$gallery = Gallery::find($request->id);
$path = 'public'.'/'.str_slug($gallery->name);
foreach ($request->images as $file) {
$image = new Image();
$image->gallery_id = $gallery->id;
$image->name = $file->getClientOriginalName();
$image->extension = $file->extension();
$image->size = $file->getClientSize();
$image->save();
// Or any custom name as the third argument
Storage::putFileAs($path, $file, $file->getClientOriginalName());
}
}
我的问题是我不知道如何通过画廊ID,所以我可以访问它的功能?我有一些想法将它放在按钮中的data-gallery-id上,但是如何传递这些数据以便与图像一起发送?
答案 0 :(得分:0)
我认为我们不能发送图像对象。但你可以这样做。您可以创建一个隐藏的输入类型,以在您的表单中存储图像库ID: 提交表单后,您可以在控制器中获得$ request-&gt; id。
答案 1 :(得分:0)
根据他们的Documentation
params
:可以是传输到服务器的其他参数的对象,也可以是使用文件xhr调用的函数,如果它是一个分块上传,则是块参数。在函数的情况下,这需要返回一个映射。 默认实现对普通上传没有任何作用,但为分块上传添加了相关信息。
因此您可以将dropzone配置修改为
Dropzone.options.addImages = {
paramName: "images", // The name that will be used to transfer the file
maxFilesize: 2, // MB
// Whether to send multiple files in one request.
// If this it set to true, then the fallback file input element will
// have the multiple attribute as well.
uploadMultiple: TRUE,
params: {
'gallery_id' : 1 // Your gallery Id
}
};
这与在表单元素中添加隐藏输入字段相同。
答案 2 :(得分:0)
您可以使用在发送每个文件之前调用的 dropzone 事件方法,此方法有 3 个参数文件:用于将发送的文件,用于数据传输的 xhr,以及将包含您的数据的 formData
在您的情况下,您必须这样做:
Dropzone.on('sending', function(file, xhr, formData){
formData.append('gallery_id', put_here_your_id )
}
并且在 Laravel 控制器中你可以读取你的 id :
$request->galery_id