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

标签 javascript laravel-5 laravel-blade dropzone.js

我在 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/

相关文章:

javascript - 如何在javascript中正确存储和显示不同时区的工作时间?

javascript - 强制 Sublime Text Editor 使用 4 个空格进行缩进

laravel-5.2 - Laravel Blade 检查用户角色

mysql - 在 Laravel 中对分页变量进行排序

javascript - 将两个 javascript 合并为一个 foreach

javascript - 登录错误信息

javascript - 位置和 slider (见图)

javascript - 云函数陷入无限循环

Laravel - 创建和附加 - 多对多关系

javascript - 是否可以在 Blade 模板文件中创建 Vue 单文件组件?