Intereting Posts
Обход для PHP5 в PDO rowCount MySQL Почему мой файловый скрипт php не перемещает файл? CodeIgniter: Можно ли удалить контроллер и функцию из URL с помощью маршрутов или .htaccess? Ошибка ERR_CONNECTION_RESET с использованием WAMP Как получить дату создания файла в браузере с помощью javascript или jquery Лучшие методы очистки взломанного сайта без чистой версии? Включить поддержку PHP для postgresql в сервере Ubuntu 11.04 Пользовательское событие для WordPress Cron Job Не выполняется Налоговый класс «Нулевая ставка» для каждой роли пользователя для определенных идентификаторов продукта Проблема с запуском инструкции PDO из вызова $ .ajax SOLVED Fresh Laravel устанавливает передачу Mcrypt «error». (OSX) laravel использовать сессию для хранения поля ввода и перейти на другую страницу Настройка регистрации FOSUserBundle с помощью FOSRestBundle REST API Создание уникальных имен изображений Как распечатать эхо PHP в приложении для Android?

Dropzone: запретить загрузку дубликатов файлов

Я использую Dropzone. Я хотел бы предотвратить загрузку файла, который уже существует в виде миниатюры в панели «Dropzone». При загрузке я имею в виду не разрешать одновременное отображение файла с тем же именем в панели. Меня не волнует случай с файлом, уже существующим на сервере, и не отображается в панели, так как он будет заменен новым с тем же именем.

Я не могу найти, как добиться этого, несмотря на мои усилия. Буду признателен за вашу помощь.

большое спасибо

Попробуй это. Недавно у меня была аналогичная проблема. Я делаю это с помощью этого.

https://www.bountysource.com/issues/2993843-dropzone-did-not-check-the-duplicate-file-on-addfile?utm_campaign=plugin&utm_content=tracker%2F283989&utm_medium=issues&utm_source=github

Добавьте эти простые строки кода:

myDropzone.on("addedfile", function(file) { if (this.files.length) { var _i, _len; for (_i = 0, _len = this.files.length; _i < _len - 1; _i++) // -1 to exclude current file { if(this.files[_i].name === file.name && this.files[_i].size === file.size && this.files[_i].lastModifiedDate.toString() === file.lastModifiedDate.toString()) { this.removeFile(file); } } } }); 

Вот решение, к которому я пришел:

Добавьте эти два параметра в свою инициализацию Dropzone

 dictDuplicateFile: "Duplicate Files Cannot Be Uploaded", preventDuplicates: false, 

и добавить еще одну прототипную функцию и повторно реализовать вашу addFile прототипа addFile над инициализацией addFile следующим образом:

 Dropzone.prototype.isFileExist = function(file) { var i; if(this.files.length > 0) { for(i = 0; i < this.files.length; i++) { if(this.files[i].name === file.name && this.files[i].size === file.size && this.files[i].lastModifiedDate.toString() === file.lastModifiedDate.toString()) { return true; } } } return false; }; Dropzone.prototype.addFile = function(file) { file.upload = { progress: 0, total: file.size, bytesSent: 0 }; if (this.options.preventDuplicates && this.isFileExist(file)) { alert(this.options.dictDuplicateFile); return; } this.files.push(file); file.status = Dropzone.ADDED; this.emit("addedfile", file); this._enqueueThumbnail(file); return this.accept(file, (function(_this) { return function(error) { if (error) { file.accepted = false; _this._errorProcessing([file], error); } else { file.accepted = true; if (_this.options.autoQueue) { _this.enqueueFile(file); } } return _this._updateMaxFilesReachedClass(); }; })(this)); }; 

Вы также можете изменить свой файл drozone, если хотите.

Я проверяю сервер, если файл дублируется, а затем возвращает ошибку в dropzone, ee ниже:

  $targetPath = '/tmp/my_dropzone_files'; $image_name = $_FILES['file']['name']; $targetFile = $targetPath . '/' . $image_name; $file_exists = file_exists ( $targetFile ); if( !$file_exists ) //If file does not exists then upload { move_uploaded_file( $tempFile, $targetFile ); } else //If file exists then echo the error and set a http error response { echo 'Error: Duplicate file name, please change it!'; http_response_code(404); } 

Следующее решение помогло мне:

 this.on('addedfile', function(file) { setTimeout(function() { $(".dz-file-preview").remove(); // removes all files except images }, 3000); });