Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ограничение загружаемого файла (https://javascript.ru/forum/misc/48914-ogranichenie-zagruzhaemogo-fajjla.html)

artiom-75 21.07.2014 23:56

Ограничение загружаемого файла
 
Уважаемые знатоки есть код загрузки файла.
<script>
function readURL(input) {  if(!/(\.bmp|\.gif|\.jpg|\.jpeg|\.png)$/i.test(input.value)) {
	alert('Error');
	document.getElementById('image_p').value='';return false;
	}
if (input.files && input.files[0]) {
var reader = new FileReader();

reader.onload = function (e) {
$('#img_prev')
.attr('src', e.target.result)
.width(150);
};

reader.readAsDataURL(input.files[0]);
}
}
</script>
<input type="file" id="image_p" name="attachment[]" onchange="readURL(this);" />
<img id="img_prev" class="image_block" src="image.png" alt="" />

Что нужно добавить в коде, чтобы было ограничение загружаемого файла до 0.5 мегабайт и размеры картинки: ширина до 1024-пиксель, высота до 768-пиксель?

Rise 22.07.2014 05:52

artiom-75, :blink:
<input id="img_file" type="file" onchange="readURL(this)"><br>
<img id="img_prev" width="150" src="" alt="Preview">

<script>
function readURL(input) {
	var type   = ['image/bmp','image/gif','image/jpg','image/jpeg','image/png'];
	var width  = 1024;
	var height = 768;
	var size   = 524288; // bytes
	var file   = input.files[0];
	var prev   = document.getElementById('img_prev');
	function errMsg(x) {
		alert('Error ' + x);
		prev.src = '';
		input.value = '';
	}
	if (type.indexOf(file.type) == -1) {
		errMsg('Type');
		return false;
	} else if (file.size > size) {
		errMsg('Size');
		return false;
	} else {
		var reader = new FileReader();
		reader.readAsDataURL(file);
		reader.onload = function(e) {
			var img = new Image();
			img.src = e.target.result;
			img.onload = function() {
				if (this.width <= width && this.height <= height) {
					prev.src = this.src;
				} else {
					errMsg('Width/Height');
				}
			};
		};
	}
}
</script>

Erolast 22.07.2014 08:46

Ограничение в js не поможет. Если кому-то приспичит, он легко сможет его обойти, так как javascript исполняется на стороне клиента. Надо делать проверки на стороне сервера, в php.

artiom-75 22.07.2014 14:49

Спасибо огромное Rise!
Erolast вы правы. на я не знаю как это можно организовать на стороне сервера.


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