Автор оригинала: David Wong.
В процессе написания веб-программы мы часто сталкиваемся с классической сценой загрузки файла: загрузка изображения. Исходя из стремления к наилучшему пользовательскому опыту, напишите следующее Ajax Загрузите свой аватар.
1. Настройка маршрутизации
В laravel маршруты. php Установите маршрут в:
Route::get('/avatar/upload','[email protected]');
Route::post('/avatar/upload','[email protected]');
2. Настройка контроллера
останься UsersController.php Добавить соответствующий аватар и загрузка аватара Первый используется для визуализации представления, а второй-для обработки фактически загруженного файла изображения.
public function avatar()
{
return view('users.avatar');
}
public function avatarUpload()
{
//some codes to deal with upload avatar
}
3. Напишите интерфейсный код
На самом деле это соответствующая пользователи/ Папка На самом деле это соответствующая пользователи/ Папка Установите стиль в файле представления. Следующие HTML-теги могут быть установлены в соответствии с вашей собственной ситуацией класс
< div class="avatar-upload" id="avatar-upload"> {!! Form::open( [ 'url' => ['/avatar/upload/api'], 'method' => 'POST', 'id' => 'upload', 'files' => true ] ) !!} {!! Form::close() !!}
Ajax-запросы реализованы в JS. Здесь AJAX использует сторонний плагин http://malsup.com/jquery/form/:
$(document).ready(function() {
var options = {
beforeSubmit: showRequest,
success: showResponse,
dataType: 'json'
};
$('#image').on('change', function(){
$('(upload Avatar'). HTML ('uploading... ');
$('#upload').ajaxForm(options).submit();
});
});
function showRequest() {
$("#validation-errors").hide().empty();
$("#output").css('display','none');
return true;
}
function showResponse(response) {
if(response.success == false)
{
var responseErrors = response.errors;
$.each(responseErrors, function(index, value)
{
if (value.length != 0)
{
$("#validation-errors").append(''+ value +'');
}
});
$("#validation-errors").show();
} else {
$('#user-avatar').attr('src',response.avatar);
}
}4. Обработка загруженных изображений
Вернитесь в Вернитесь в Средний
public function avatar()
{
$this->wrongTokenAjax();
$file = Input::file('image');
$input = array('image' => $file);
$rules = array(
'image' => 'image'
);
$validator = Validator::make($input, $rules);
if ( $validator->fails() ) {
return Response::json([
'success' => false,
'errors' => $validator->getMessageBag()->toArray()
]);
}
$destinationPath = 'uploads/';
$filename = $file->getClientOriginalName();
$file->move($destinationPath, $filename);
return Response::json(
[
'success' => true,
'avatar' => asset($destinationPath.$filename),
]
);
}
}
Примечание: перед загрузкой убедитесь, что общедоступный/ Создан в каталоге загружает/ Папку, и предоставьте соответствующие разрешения, такие как:
sudo chmod -R 777 uploads/
Выше Загрузка аватара Метод, есть один неверный токен Ajax Метод, который используется для тестирования системы laravel токен Значение, также в UsersController.php Добавь:
public function wrongTokenAjax()
{
if ( Session::token() !== Request::get('_token') ) {
$response = [
'status' => false,
'errors' => 'Wrong Token',
];
return Response::json($response);
}
}
5. последний
Вот простой пример Ajax Демонстрация загруженного изображения завершена. В процессе фактического развития нам необходимо рассмотреть следующие вопросы:
Создавайте разные папки в соответствии с разными именами пользователей или идентификаторами пользователей, которые можно найти в средстве
Загрузка аватараМетод$файл->переместить (путь к назначению, имя файла)Предыдущее использованиеОбновите поле пользователя
аватар, оно выглядит так: вЗагрузка аватараПрежде чем метод вернет данные, используйте следующую аналогичную инструкцию:Если вы хотите еще больше улучшить работу и предоставить некоторые функции, такие как обрезка изображений и добавление фильтров, вы можете использовать PHP-пакет взаимодействия/изображений и реализацию обрезки изображений jcrop JS одновременно, например:
Если изображение успешно возвращено,
$('#аватар пользователя'). attr('src',response.avatar)После внедрения:Вы можете обрезать изображение на передней панели, а затем обрезать соответствующие данные, такие как
высота,ширина,выровнять по x.y-выровнятьЕго можно перенести на серверную обработку. С помощью взаимодействия/изображения легко обрабатывать изображения в фоновом режиме!
Счастливого Взлома
Оригинал: “https://developpaper.com/the-implementation-of-ajax-upload-users-image-in-laravel-project/”