2015-05-11 2 views
-1

Мне нужно загрузить изображение с помощью ajax. Разрабатывая свою точку зрения: Мне нужно передать данные моего изображения на страницу PHP и проверить тип, размер, имя и все остальные атрибуты файла. Если все атрибуты совпадают, тогда мне нужно только передать файл. Проблема здесь в том, что передача данных должна выполняться только в формате JSON (AJAX). Еще одна важная вещь заключается в том, что мне не нужно преобразовывать ее в base64.Загрузить изображение с помощью ajax (json)

Если вы можете мне помочь в этом, то вас больше всего приветствуют.

Заранее спасибо.

+0

Что вы пытались до сих пор? В любом случае, вы можете отправить свое изображение через ajax в качестве строки * base64 * – kosmos

+0

Мне не нужно преобразовывать его в базу 64 @kmsdev –

+1

Если вы собираетесь передать его в JSON, у вас нет другого выбора, кроме как использовать base64. – Misunderstood

ответ

1

Идея в SO заключается в том, чтобы работать с текущим кодом OP. Я имею в виду, что мы не здесь, чтобы сделать всю работу, потому что она должна иметь цену. В любом случае, это обходное решение для вашей проблемы:

Преобразование изображения в base64 с помощью javascript. Этот полезный метод работает как шарм:

// Code taken from MatthewCrumley (http://stackoverflow.com/a/934925/298479) 
function getBase64Image(img) { 
    // Create an empty canvas element 
    var canvas = document.createElement("canvas"); 
    canvas.width = img.width; 
    canvas.height = img.height; 

    // Copy the image contents to the canvas 
    var ctx = canvas.getContext("2d"); 
    ctx.drawImage(img, 0, 0); 

    // Get the data-URL formatted image 
    // Firefox supports PNG and JPEG. You could check img.src to guess the 
    // original format, but be aware the using "image/jpg" will re-encode the image. 
    var dataURL = canvas.toDataURL("image/png"); 

    return dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 
} 

Тогда просто передать возвращенную строку как base64 через AJAX:

$.ajax({ 
    url: 'path/to/your/script.php', 
    type: 'post', 
    data: { paramName: imagedata } // the returned data from above js method, 
    /*...*/ 
}); 

И в PHP стороне, просто возвращает строку в файл изображения:

// Code taken from Austin Brunkhorst (http://stackoverflow.com/a/15153931/3648578) 
function base64_to_jpeg($base64_string, $output_file) { 
    $ifp = fopen($output_file, "wb"); 

    $data = explode(',', $base64_string); 

    fwrite($ifp, base64_decode($data[1])); 
    fclose($ifp); 

    return $output_file; 
} 
+0

Спасибо @kmsdev. Я попробую это и сообщит вам об обновлении. –

+0

Добро пожаловать, надеюсь, вы достигнете этого. Обратите внимание на метод ajax, который требует jQuery – kosmos

+0

. Ваш ответ сработал для меня. Но сейчас некоторые требования были изменены. Поэтому я модифицировал код. Но все еще проблема. Можете ли вы заглянуть в нее - [http://stackoverflow.com/questions/30166082/how-to-fetch-data-from-ajax-in-php] –

Смежные вопросы