Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ограничение размера нескольких файлов (https://javascript.ru/forum/misc/63937-ogranichenie-razmera-neskolkikh-fajjlov.html)

rodiony4 09.07.2016 18:11

Ограничение размера нескольких файлов
 
Здравствуйте
Чтобы ограничить размер файла вложения 5мб, можно сделать так:
<input type="file" class="attach-more" onchange="attach(this)"><br>
<input type="file" class="attach-more" onchange="attach(this)"><br>
<div id="err_attach"></div>

<script type="text/javascript">
function attach(input){
	var attach_size = 5*1024*1024; //5мб
	var attach_file = input.files[0];
	if(attach_file.size > attach_size){
		$('#err_attach').html('Размер вложений ограничен 5 мб!');
		$('.attach-more').val(''); //удалить аттач, если превышен размер файла
	} 
};
</script>

Пожалуйста, подскажите, как можно сделать ограничение теме же 5мб если инпутов type=file несколько
например,
в первый инпут выбирается файл 4мб - все ОК, файл для вложения выбран
во второй инпут выбирается файл 2мб, общий размер двух файлов превышен (4+2=6), и в этом случае второй инпут должен остаться пустым

Erolast 09.07.2016 18:40

На сервере проверка продублирована?

rodiony4 09.07.2016 18:49

Цитата:

Сообщение от Erolast (Сообщение 421690)
На сервере проверка продублирована?

нет, не нужно

Erolast 09.07.2016 19:27

Цитата:

нет, не нужно
Я открою инспектор, удалю обработчик onchange на инпутах и спокойно залью пару гигов.
Либо даже не буду открывать браузер и через curl направлю /dev/urandom на сервер.

Уверен, что не нужно?

rodiony4 09.07.2016 19:49

Цитата:

Сообщение от Erolast (Сообщение 421693)
Уверен, что не нужно?

уверен
ограничение на размер делаю для того, чтобы письмо с вложением могло отправиться (почтовые сервера делают ограничения на аттач 10-20мб). Пользователь конечно может открыть инспектор и удалить обработчик onchange или инпут или всю форму, но это уже его проблемы..

Erolast 09.07.2016 21:16

Ну ладно.

Как-то так:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>File attachment</title>
  </head>
  <body>
    <form id="files" action="/send-a-file" method="post">
      <input type="file" class="attach-more">
      <input type="file" class="attach-more">
    </form>
    
    <script>
      $("#files").bind("change", function(event) {
        var max_attachments_size_allowed = 5 * 1024 * 1024; //5мб
        var attachments_size = 0;

        $('#files input[type=file]').each(function() {
          attachments_size += this.files[0].size;
        });

        if (attachments_size > max_attachments_size_allowed) {
          $('#err_attach').html('Размер вложений ограничен 5 мб!');
          event.target.value = '';
        }
      })
    </script>
  </body>
</html>

rodiony4 09.07.2016 21:43

Erolast, у меня почему то не работает
http://www.tatuning.ru/Untitled-2.html

Erolast 09.07.2016 21:56

Это я неправильный код привел, забыл обработчик провесить. Уже поправил, теперь работает.

rodiony4 09.07.2016 22:14

Erolast, не совсем так как я хотел
сейчас, например, выбираю файл в первом инпуте размером 12мб - ограничение не срабатывает
выбираю файл 1мб во втором инпуте - ограничение сработало (12+1=13мб)

laimas 10.07.2016 00:26

Цитата:

Сообщение от rodiony4
но это уже его проблемы..

Это будут ваши проблемы, почта отправляется не от имени клиента, а от имени вашего хоста.


Часовой пояс GMT +3, время: 07:33.