2013-12-01 3 views
0

Я занимаюсь этим практически весь день, но не могу понять, как работают xmlhttprequests.Как отправить изображения вместе с другими данными с помощью xmlhttprequest?

Я могу отправить строки и вещи в одну сторону, и я могу отправлять файлы изображений другим способом, но я не могу понять, как отправить их обоих сразу.

Я попытался отправить данные изображения Url в виде строки, но в ней есть несколько «+», которые его разрывают. Это, как я узнал, отправить изображение (с холстом) таким образом, что работает, но я не знаю, как изменить его, чтобы принять более подробную информацию:

var xhr = new XMLHttpRequest(); 
xhr.open("POST", "uploadimg.php", false); 
xhr.setRequestHeader("Content-Type", "application/upload"); 
xhr.send(canvas.toDataUrl()); 

и РНР:

if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){ 

    $received = $GLOBALS['HTTP_RAW_POST_DATA']; 
    $imageData = substr($received, strpos($received, ",")+1); 
    $unencodedData = base64_decode($imageData); 

    $fp = fopen("images/" . date("Y-m-d-G-i-s") . ".png", "wb"); 
    fwrite($fp, $unencodedData); 
    fclose($fp); 
} 

Кроме того, я не знаю, как отправить несколько файлов, если я по какой-то причине захотел в будущем.

Я не могу найти хорошую информацию о том, как xmlhttprequests действительно работает, поэтому для большей части я не знаю, что я делаю, кроме копирования кода. Какой был бы лучший способ сделать это, или как мне его изменить?

+0

http://mdn.beonex.com/en/DOM/XMLHttpRequest/Using_XMLHttpRequest.html https: //developer.mozilla .org/en-US/docs/Web/API/XMLHttpRequest – SLaks

+0

@SLaks Это не очень для меня, потому что весь HTTP-запрос - это все ????? мне. Я понимаю javascript, и я в основном понимаю PHP, но я понятия не имею, как компьютер действительно отправляет и понимает передаваемые данные. – user3032989

+0

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol – SLaks

ответ

0

Как насчет использования строки JSON. Например:

xhr.send({ 
    image1: canvas1.toDataUrl(), 
    image2: canvas2.toDataUrl(), 
    image3: canvas3.toDataUrl(), 
    some_string: 'some string here', 
    number: 5, 
    created_on: new Date() 
}); 

также тип содержимого запроса должен быть application/json

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