我在我的Laravel應用程序中使用Dropzone。在Dropzone中,我可以限制一次上傳的最大文件數量。但是,刷新頁面後,用戶可以上傳更多照片。在Dropzone中使用Laravel刀片 - >最大總文件上傳
Dropzone.options.addPhotosForm = {
maxFiles: 5,
};
我能夠通過計算該用戶已經上傳至本頁面的照片數量,然後改變類顯示器,以消除前端這種能力:無;並給予警告如下:
<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卡布雷拉您的快速答覆!
我已經採用了基於您的輸入的解決方案。
<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>
這個效果很好。再次感謝!! :)