javascript — сохранить изображение во временную папку после выбора в настройках файла, а затем сохранить его в папке после отправки cakeStack Overflow

Я пытаюсь сначала сохранить изображение во временную папку, как только пользователь выбрал его из опций файла. А затем сохраните его, чтобы переместить папку после отправки формы.

Вот код для загрузки:

$id = $this->Session->read('Auth.User.id');
$userData = $this->User->findById($id);
if ($userData['User']['id']  === $this->Session->read('Auth.User.id')) {
$this->set('userData', $userData);
} else {
throw new NotFoundException(__('You are not allowed to this page!'));
}

move_uploaded_file($fileTmp,  WWW_ROOT.'files\Users'.DS.$uid.DS.$fileInfo['tmpFileName']);

Этот код позволяет мне сохранить его непосредственно в папке, не сохраняя его во временной папке.

Я хочу сохранить то, что просматривается.

Вот мой JavaScript в предварительном просмотре:

//preview
$("#file").change(function() {
var file = this.files[0];
var imagefile = file.type;
var imagesize = file.size;
var match= ["image/jpeg","image/png","image/jpg","image/gif"];
$('.upload-submit').prop('disabled',false).css('opacity',1);
if(!((imagefile==match[0]) || (imagefile==match[1]) || (imagefile==match[2]) || (imagefile==match[3])))
{

$("#message").html("<p id='error' style='color:red;'>Please Select A valid Image File</p>"+"<h4  style='color:red;'>Note</h4>"+"<span id='error_message'  style='color:red;'>Only jpeg, jpg, gif and png Images type allowed</span>");
return false;
} else if (imagesize > 6000000){

$("#message").html("<p id='error' style='color:red;'>Your file size is higher than the allowed size (6MB)</p>");
return false;
}
else
{
var reader = new FileReader();
reader.onload = imageIsLoaded;
reader.readAsDataURL(this.files[0]);
var imgData = reader.onload;        }
});
function imageIsLoaded(e) {
$("#file").css("color","green");
$('#image_preview').css("display", "block");
$('#previewing').attr('src', e.target.result);
$('#previewing').attr('width', '250px');
$('#previewing').attr('height', '230px');
};

и мой HTML:

<form method="post" action="/users/profileimg_edit" enctype="multipart/form-data" id="uploadimage">
<?php echo $this->Session->flash(); ?>
<input type="file" name="file" id="file" class="upload-image-btn" >

<div id="image_preview"><img  id="previewing" src="/images/noimage.png" width="80" height="80" />
<div id="message"></div>
</div>

<button class="upload-submit"> Upload Image </button>

</form>

С помощью этого кода пользователь может просмотреть то, что он / она выбрал, и сохранить его, но я хочу сначала сохранить его во временной папке.

Спасибо за помощь, которая будет оказана.

0

Решение

Сначала переместите изображение во временный каталог на сервере (скажем, WWW_ROOT . 'tmp' . DS . $fileInfo['tmpFileName']), затем используйте этот путь в вашем предварительном просмотре (чтобы URL-адрес стал похож на http://my.server.com/tmp/b5c8f033dfaa.jpg). Затем, когда пользователь завершит предварительный просмотр, переместите файл в конечный пункт назначения.

Тем не менее, вы должны отслеживать временное имя файла ($fileInfo['tmpFileName']) потому что эта информация будет потеряна, если вы перейдете на следующую страницу. Вы можете поместить его в URL или сохранить в объекте Session.

Вы также можете добавить cronjob, чтобы удалить старые загруженные файлы из tmp каталог, потому что обычно будут загружены некоторые файлы и т. д.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]