使用 ajax (json) 上传图片
Upload Image using ajax (json)
我需要使用 ajax 上传图片。阐述我的观点:
我需要将图像数据传递到 PHP 页面并检查文件的类型、大小、名称和所有其他属性。如果所有属性都匹配,那么只有我需要传输文件。这里的问题是数据的传递应该只以 JSON(AJAX) 格式完成。更重要的一件事是我不必将它转换为 base64。
如果你能在这方面帮助我,非常欢迎你。
提前致谢。
SO 中的想法是在 OP 当前代码上工作。我的意思是,我们不是来完成所有工作的,因为它应该有代价。无论如何,这里有一个解决您的问题的方法:
使用 javascript 将您的图像转换为 base64。这个有用的方法就像一个魅力:
// Code taken from MatthewCrumley (
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,/, "");
}
然后只需将 returned 字符串作为 base64 通过 ajax:
$.ajax({
url: 'path/to/your/script.php',
type: 'post',
data: { paramName: imagedata } // the returned data from above js method,
/*...*/
});
并且,在 PHP 端,只是 return 图像文件的字符串:
// Code taken from Austin Brunkhorst (
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;
}
我需要使用 ajax 上传图片。阐述我的观点: 我需要将图像数据传递到 PHP 页面并检查文件的类型、大小、名称和所有其他属性。如果所有属性都匹配,那么只有我需要传输文件。这里的问题是数据的传递应该只以 JSON(AJAX) 格式完成。更重要的一件事是我不必将它转换为 base64。
如果你能在这方面帮助我,非常欢迎你。
提前致谢。
SO 中的想法是在 OP 当前代码上工作。我的意思是,我们不是来完成所有工作的,因为它应该有代价。无论如何,这里有一个解决您的问题的方法:
使用 javascript 将您的图像转换为 base64。这个有用的方法就像一个魅力:
// Code taken from MatthewCrumley (
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,/, "");
}
然后只需将 returned 字符串作为 base64 通过 ajax:
$.ajax({
url: 'path/to/your/script.php',
type: 'post',
data: { paramName: imagedata } // the returned data from above js method,
/*...*/
});
并且,在 PHP 端,只是 return 图像文件的字符串:
// Code taken from Austin Brunkhorst (
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;
}