Загрузка Ajax-файла «Произошла ошибка при загрузке ресурса» и сетевое соединение потеряно в Safari - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь загрузить файл и большой палец этого файла (используя cropper v2.3.0).Этот код работает во всех других браузерах, но в Safari выдает ошибку.

Проблема описывается следующим образом:

  1. в браузере Safari на рабочем столе при загрузке файла, затемпроизошла ошибка ниже и использовался другой браузер, чем Safari, ошибки нет и сообщение об успешном получении.

  2. Я тестирую оба способа, которые сначала загружают только обрезанное изображение в кодировке base64 или также в BLOB-объекте.как файл с добавлением в formData, но в обоих случаях ошибка не устранена.

  3. Я также пытался загрузить изображение только тогда, когда ошибка иногда возникала, а иногда нет.

  4. если использовать регулировку обрезки, то произошла ошибка (это мое предположение)

Мой код JS для отправки формы

function addFile() {
 $("#result").html("");
 var myForm = $('#mainForm');
 var formData = new FormData(myForm[0]);

 $.ajax({
    url: "action.php", // Url to which the request is send
    type: "POST", // Type of request to be send, called as method
    data: formData, // Data sent to server, a set of key/value pairs (i.e. form fields and values)
    contentType: false, // The content type used when sending data to the server.
    cache: false, // To unable request pages to be cached
    processData: false, // To send DOMDocument or non processed data file it is set to false
    dataType: "json",
    success: function (data)            // A function to be called if request succeeds
    {
        $("#result").html(data.response + " : " + data.message);
    },
    error: function (res) {
        $("#result").html(res.responseText);
    }
 });
 return false;
}

код моего действия php

    <?php

    $uploadThumbnailPath    = "dir";
    $thumbImgData           = $_POST['thumbImg'];

    $numberOfImages = 1;

    $isImageUploaded = 0;
    if ($thumbImgData != "") {
        //thumbnail image uploading code
        list($type, $thumbImgData) = explode(';', $thumbImgData);
        list(, $thumbImgData) = explode(',', $thumbImgData);
        $thumbImgData = base64_decode($thumbImgData);

        $myTimeStamp      = "thumbImg_" . time() . uniqid();
        $displayImageName = $myTimeStamp . ".png";
        $dir              = $uploadThumbnailPath;
        if (file_put_contents("$dir/$displayImageName", $thumbImgData)) {
            $jpgFormatImageName = $myTimeStamp . ".jpg";
            convertPNGtoJPG("$dir/$displayImageName", "$dir/$jpgFormatImageName", 238, 238, 238, 1);
            if (file_exists("$dir/$displayImageName")) {
                unlink("$dir/$displayImageName");
            }
            $isImageUploaded = 1;
        }
    } else {
        $arrayResponse = array("response" => "thumbImg_BLANK", "message" => 'thumbImg_BLANK');
        echo json_encode($arrayResponse);
        exit;
    }


    for ($i = 1; $i <= $numberOfImages; $i++) {

        if (isset($_POST["imgName$i"])) {
            $itemImagesName = "";
        } else {
            $itemImagesName = $_FILES["imgName$i"]['name'];
        }
        if ($itemImagesName != "") {
            $extension                   = pathinfo($itemImagesName, PATHINFO_EXTENSION);
            $uploadNewFileNameWithoutExt = "image_" . md5($i . time());
            $uploadDirPath               = "dir/p/";

            $uploadNewFileName[$i]     = $uploadNewFileNameWithoutExt . '.' . $extension;
            $uploadNewFileWithPathName = $uploadDirPath . $uploadNewFileName[$i];
            $mesUpload                 = uploadImageFileOnServer("imgName$i", $allowedExts, $maxFileSize, $uploadNewFileWithPathName);
        }
    }

    $itemImages = implode("#:#", $uploadNewFileName);

    $thumbnailImageName = "default_thumbnail.png";
    if ($isImageUploaded == 1) {
        $thumbnailImageName = $jpgFormatImageName;
    }

    if ($mesUpload == "FILE_UPLOADED") {
        $arrayResponse = array("response" => "OK", "message" => "OK UPLOAD SUCCESS");
        echo json_encode($arrayResponse);
        exit;
    } else {
        /* $mesUpload */
        $arrayResponse = array("response" => "FILE_FAILED", "message" => "FAIL TO UPLOAD");
        echo json_encode($arrayResponse);
        exit;
    }
    ?>

Вот снимки экрана с ошибкой того, что это изображение, где снимок экрана

1

снимок экрана 2

Пожалуйста, помогите мне решить эту проблему.Я озадачен этой ошибкой, и у меня нет никакой идеи, чтобы решить эту проблему.Если кто-то захочет использовать, я загружаю образец кода в Интернете, нажмите на ссылку ниже https://tamapev.000webhostapp.com/upload-img/

1 Ответ

0 голосов
/ 19 декабря 2018

Проблема заключается в том, что вы отправляете данные формы не на ту страницу, сначала определите, находится ли action.php в корневом каталоге или в каталоге с именем upload-img.Затем отправьте запрос на данную страницу.

Далее для сообщения об ошибке «Произошла ошибка при загрузке ресурса», чтобы увидеть, что является настоящей ошибкой, на вашем первом снимке экрана есть маленькая кнопка впанель с надписью «Response», нажмите на нее и измените на «JSON»

Если «action.php» находится в «upload-img», вам нужно изменить

url: "action.php",до url: "/upload-img/action.php",

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