Я только что перенес свой локальный код на работающий сервер. Все работает, но когда я пытаюсь загрузить изображение на сервер, я получаю сообщение об ошибке «Unprocessable Entity». Загрузка файлов отлично работает на моем локальном сервере. Я использую сервер Windows с IIS и PHP 7.2, и мой проект использует laravel 5.5
Я уже пытался предоставить полный доступ к IUSER и IIS_IUSRS. Я также попытался обновить файл php.ini (file_uploads = On, upload_max_filesize = 20M, post_max_size = 20M)
Моя форма
<form class='form-inline' id='edit-property-image' enctype='multipart/form-data'>
<input type='hidden' id='property' value='$id' name='property'>
<input type='file' class='custom-file-input' id='propertyImage' name='propertyImage' onchange='propertyImageChange(this)'>
<a href='javascript:updatePropertyImage($id)' class='btn btn-primary'>Update Image</a>
</form>
Метод Ajax
function updatePropertyImage(id)
{
$.ajax({
data:new FormData($("#edit-property-image")[0]),
async:false,
type:'post',
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
method: 'POST', // Type of response and matches what we said in the route
url: '/property/updateImage', // This is the url we gave in the route
success: function(response){ // What to do if we succeed
if(response.response == "success") {
$('.modal').modal('hide');
propertyDetails(id);
}
},
error: function(jqXHR, textStatus, errorThrown) { // What to do if we fail
alert(errorThrown);
}
});
}
Контроллер
$ id = $ request-> input ('property');
$this->validate($request,[
'propertyImage' => 'image|max:1999|required'
]);
$response = "failed";
//Handle File Upload
if($request->hasFile('propertyImage')){
//Get Filename with extension
$fileNameWithExt = $request->file('propertyImage')->getClientOriginalName();
// Get just filename
$filename = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
//Get just extension
$extension = $request->file('propertyImage')->getClientOriginalExtension();
//Filename to store
$fileNameToStore = $id.'_'.time().'.'.$extension;
//Upload Image
$path = $request->file('propertyImage')->storeAs('public/property_images', $fileNameToStore);
$property = Property::find($id);
$property->image_url = $fileNameToStore;
$property->save();
$response = "success";
}
return response()->json([
'response' => $response,
]);