PHP, JSON и JQuery Загрузить - PullRequest
4 голосов
/ 10 марта 2012

Долгое время я использовал очень стандартный пост HTML в своем скрипте загрузки PHP для загрузки изображений. Я хотел попробовать что-то новое, отправив изображение в скрипт PHP uplaod через JQuery / JSON. Все текстовые данные на моем сайте отправляются через это, и я хотел попробовать загрузить изображения для работы с JQUery. Я гуглил, но нашел только готовые скрипты, ни у кого никогда не было учебника по его созданию или с чего начать, нет ничего плохого в использовании готовых скриптов, но часто я не могу заставить его работать с моим сайтом или стилем это так, что это вписывается, поэтому я начал быстро что-то писать, вы, ребята, скажите, пожалуйста, сработает ли это, если изображение не является текстовыми данными?

Мой HTML:

<div class="upload_box_logged">
<input type="file" id="file_up"><br />
<button id="up_btn">Upload</button>
<em style="display:none; color:red;" id="no_file"  >Please Select a File!</em>
<em style="display:none; color:red;" id="up_fail" >Failed!</em>
<em style="display:none; color:red;" id="up_success" >Success!</em>
</div>

Мой JQuery:

$('#up_btn').click(function(){

var fileCheck = $('#file_up').val();
    if(fileCheck == '')
    {
        $('#no_file').fadeIn();
    }

    else
    {
        var file_upVar = encodeURIComponent($('#file_up').val());

             $.ajax({ 
            type: 'POST', url: 'upload.php',  dataType: "json",  data: { file_up: file_upVar  }, 
            success: function(result) {                 
                if (!result.success) { $('#up_fail').fadeIn().fadeOut(5000); }  
                else { $('#up_success').fadeIn().fadeOut(5000);  } 
            }  
        }); 


    }


});

Теперь вот мой PHP-файл, который я использовал со своим стандартным методом HTML post to PHP:

* * 1010

Мне, очевидно, придется расшифровать пост с чем-то вроде этого ... хорошо, если бы это был правильный путь.

$uploaded_file = htmlspecialchars(trim(urldecode($_POST['file_up'])));

Ну, вот как бы я это сделал, если бы это был текст. В любом случае я могу сделать это с данными изображения?

Спасибо большое -Mike

Ответы [ 3 ]

3 голосов
/ 10 марта 2012

К сожалению, я не верю, что есть способ опубликовать изображения и файлы через Ajax.

То, как я обычно делал это в прошлом, - это создание скрытого iframe и назначение формы для имени iframe.

Итак, пример будет выглядеть так:

<form name="imageform" method='POST' action="upload_image.php" target="image_upload_frame" enctype="multipart/form-data">
    ...
</form>
<iframe name="image_upload_frame" height="1" width="1" style="visibility: hidden"></iframe>
2 голосов
/ 10 марта 2012

Вы можете использовать это: https://developer.mozilla.org/En/DOM/Window.btoa - отлично работает для каждого Firefox (самый используемый браузер в мире!;))

1 голос
/ 10 марта 2012

Использование iframe - это распространенный и кроссбраузерный способ загрузки файлов в AJAX. Есть много интересных ресурсов:

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