Unprocessable Entity при попытке загрузить файл через Ajax - PullRequest
0 голосов
/ 24 января 2019

Я только что перенес свой локальный код на работающий сервер. Все работает, но когда я пытаюсь загрузить изображение на сервер, я получаю сообщение об ошибке «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,
    ]);  

1 Ответ

0 голосов
/ 24 января 2019

Я исправил проблему.Это было на самом деле, потому что мой файл php.ini не указывал временную папку по умолчанию.Как только я добавил, что загрузка файла работала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...