如何使用xmlhttprequest将图像与其他数据一起发送?

时间:2013-12-01 19:26:26

标签: javascript php xmlhttprequest

我几乎整天都参与其中,但我无法弄清楚xmlhttprequests是如何工作的。

我可以用一种方式发送字符串和东西,我可以用另一种方式发送图像文件,但我无法弄清楚如何同时发送它们。

我尝试将图像的dataUrl作为字符串发送,但它中有多个“+”,它会破坏它。这就是我学会以一种有效的方式发送图像(从画布上)的方法,但我不知道如何修改它以获取更多信息:

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

和php:

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如何真正起作用的好信息,所以在很大程度上我不知道除了复制粘贴代码我在做什么。什么是更好的方法,或者我应该如何改变它?

1 个答案:

答案 0 :(得分: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