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

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) {
@ -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>