gpt4 book ai didi

javascript - 在 Javascript 中使用 Laravel Blade 和 Dropzone -> 上传的最大文件总数

转载 作者:行者123 更新时间:2023-11-28 17:47:04 27 4
gpt4 key购买 nike

我在 Laravel 应用程序中使用 Dropzone。在 Dropzone 中,我可以限制一次上传的最大文件数。然而,刷新页面后,用户可以上传更多照片。

Dropzone.options.addPhotosForm = {
maxFiles: 5,
};

我可以在前端删除此功能,方法是计算该用户已为此页面上传的照片数量,然后将类更改为 display:none;并给予警告如下:

<div class="@if(count($rooms->photos) >= 10) d-none @endif">
<form action="{{ route('myroute', [$rooms->slug]) }}" method="POST" class="dropzone" id="addPhotosForm">
{{ csrf_field() }}
</form>
</div>
<div class="@if(count($rooms->photos) < 10) d-none @endif">
<p>You have uploaded {{ count($rooms->photos)}} photos. This is too many.</p>
</div>

这里的问题是,如果用户上传了 9 张照片,那么他们可以再上传 5 张照片,总共会得到 14 张照片,而不是 10 张照片,这是所需的最大值。此外,如果用户是恶意的,他们可以简单地转到“检查元素”,删除显示:无;根据需要设计并上传尽可能多的照片。

我想禁用用户在 Javascript 中上传更多照片的能力,我正在尝试使用 Laravel 的 Blade 来执行此操作,但遇到了一些问题。

所以,我有几个问题:

1) 我可以在 Javascript 中使用 Blade 吗?

我已经尝试过,例如使用:

 var count = count($rooms->photos);

然后我收到错误,

Uncaught SyntaxError: Unexpected token >

如果我能让这个工作正常,我的想法是在 Dropzone 选项中执行此操作。

init: function(file) {
if (count >= 10){
myDropzone.removeFile(file);
};

2) 有没有更好的方法来限制所有上传到 Dropzone 的内容?
我在这里尝试了一些建议,但没有成功。

谢谢!

布拉德

编辑:解决方案

感谢@Lukas 和@Miguel Cabrera 的快速回复!

我已根据您的意见采用了解决方案。

<script type="text/javascript">
var count = {{ count($rooms->photos) }};
var maxFiles = 10 - {{ count($rooms->photos) }};
</script>

<script type="text/javascript">
Dropzone.options.addPhotosForm = {
maxFiles: maxFiles,
}
</script>

这非常有效。再次感谢!! :)

最佳答案

>我可以在 Javascript 中使用 Blade 吗?

假设 $rooms->photos 是一个数组或正在实现一个 Countable 接口(interface),以下是如何使用blade 将照片计数传递给 javascript:

<script type="text/javascript">
var count = {{ count($rooms->photos) }};
</script>

2) 有没有更好的方法来限制所有上传到 Dropzone 的内容?

我认为你的解决方案很好。只需记住针对过多文件上传的后端保护即可。

关于javascript - 在 Javascript 中使用 Laravel Blade 和 Dropzone -> 上传的最大文件总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46444736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com