Обработка ошибок при загрузке картинок для статей; проверка загружаемых файлов-картинок

This commit is contained in:
Krivchikov Dmitry 2015-09-11 17:26:20 +03:00
parent ce4c3904e2
commit 7454aa005f
2 changed files with 36 additions and 25 deletions

View File

@ -52,7 +52,13 @@ class ImagesController extends Controller
$uploaddir = App::getBasedir() . '../public/photos/articles/'; $uploaddir = App::getBasedir() . '../public/photos/articles/';
$fileName = (string)$_FILES['photo']['name']; $fileName = (string)$_FILES['photo']['name'];
$temp = pathinfo($fileName); $temp = pathinfo($fileName);
$extension = strtolower($temp['extension']) ? strtolower($temp['extension']) : 'jpg'; $extension = strtolower($temp['extension']);
if (array_search($extension, array('jpg','jpeg','png')) === FALSE || getimagesize($_FILES['photo']['tmp_name']) === false) {
print 'error';
die;
}
$photo = $userId . strtolower('_' . substr(md5($fileName . time()), 0, 5) . '.' . $extension); $photo = $userId . strtolower('_' . substr(md5($fileName . time()), 0, 5) . '.' . $extension);
if (move_uploaded_file($_FILES['photo']['tmp_name'], $uploaddir . $photo)) { if (move_uploaded_file($_FILES['photo']['tmp_name'], $uploaddir . $photo)) {
ArticlePhotos::model()->add(array( ArticlePhotos::model()->add(array(

View File

@ -1,5 +1,10 @@
<script> <script>
function updatePhotobank() { function updatePhotobank() {
if (document.getElementById("hiddenframe").contentWindow.document.body.innerText == 'error') {
alert('Ошибка при загрузке.');
return false;
}
$('#photo').val(''); $('#photo').val('');
$('#caption').val(''); $('#caption').val('');
$.getJSON("/json/getmyartphotos", function (data) { $.getJSON("/json/getmyartphotos", function (data) {
@ -8,20 +13,20 @@
$("<img/> ", { $("<img/> ", {
"class": "my-new-list", "class": "my-new-list",
src: '/photos/articles/small/' + val.name, src: '/photos/articles/small/' + val.name,
title: 'img #'+val.id+' :: '+val.caption, title: 'img #' + val.id + ' :: ' + val.caption,
photoId: val.id photoId: val.id
}).appendTo('#photobank'); }).appendTo('#photobank');
}); });
$("#photobank img").on("click", function () { $("#photobank img").on("click", function () {
articleText = document.getElementById('articleText'); articleText = document.getElementById('articleText');
imgText = '\n[img|#'+$(this).attr('photoid')+']\n'; imgText = '\n[img|#' + $(this).attr('photoid') + ']\n';
insertAtCursor(articleText, imgText); insertAtCursor(articleText, imgText);
}); });
}); });
} }
function insertAtCursor(myField, myValue) { function insertAtCursor(myField, myValue) {
//IE support //IE support
if (document.selection) { if (document.selection) {
myField.focus(); myField.focus();
@ -38,7 +43,7 @@ function insertAtCursor(myField, myValue) {
} else { } else {
myField.value += myValue; myField.value += myValue;
} }
} }
</script> </script>
<div id="pageSmoothBackground" style="background-image: url(<?= $randomPoint->getImg('middle') ?>);"></div> <div id="pageSmoothBackground" style="background-image: url(<?= $randomPoint->getImg('middle') ?>);"></div>
@ -76,10 +81,10 @@ function insertAtCursor(myField, myValue) {
</div> </div>
<div class="col-md-12" style="margin: 20px 0; border-top: solid 1px #bbb; border-bottom: solid 1px #bbb;"> <div class="col-md-12" style="margin: 20px 0; border-top: solid 1px #bbb; border-bottom: solid 1px #bbb;">
<form enctype="multipart/form-data" id="articlePhotoloader" action="/images/loadPhoto" method="POST" name="loadavatar" target="hiddenframe" class="form-inline"> <form enctype="multipart/form-data" id="articlePhotoloader" action="/images/loadPhoto" method="POST" name="loadavatar" target="hiddenframe" class="form-inline">
<input type="hidden" name="MAX_FILE_SIZE" value="2097152" /> <input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
<div class="form-group"> <div class="form-group">
<label for="photo">Загрузить новое изображение</label> <label for="photo">Загрузить новое изображение (MAX 5MB) (jpg, png)</label>
<input id="photo" name="photo" type="file" class="form-control" /> <input id="photo" name="photo" type="file" class="form-control" accept=".jpg,.png,.jpeg" />
</div> </div>
<div class="form-group"> <div class="form-group">
<input id="caption" name="caption" type="text" class="form-control" placeholder="Описание (по желанию)" /> <input id="caption" name="caption" type="text" class="form-control" placeholder="Описание (по желанию)" />
@ -90,6 +95,6 @@ function insertAtCursor(myField, myValue) {
</form> </form>
</div> </div>
<div class="col-md-12" id="photobank"></div> <div class="col-md-12" id="photobank"></div>
<iframe id=hiddenframe name="hiddenframe" style="width:0px; height:0px; border:0px" onload="updatePhotobank()"></iframe> <iframe id="hiddenframe" name="hiddenframe" style="width:0px; height:0px; border:0px" onload="updatePhotobank()"></iframe>
</div> </div>
</div> </div>