我有一个使用php合并的图像(这是在localhost中)。我想自动将此文件上传到服务器php文件,该文件将接受它或将其上传到服务器文件夹。
通常的方法是使用带有multipart的表单然后提交表单来上传它。我需要将图像本身传递给php或自动提交表单,而无需手动执行。
我尝试创建目录图片集权限777并尝试将图像保存到服务器
$outfile = "http://XXXXXX.com/pictures/testing.png";
$quality = 100;
imagejpeg($output,$outfile,$quality);
无效
更新: 尝试在localhost中的canvas todataurl,它工作正常但在服务器上尝试时出错
XMLHttpRequest cannot load http://xxx.com/upload_img. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
所以我试着查看如何允许访问来源,但不明白该怎么做。有人可以给我一个关于如何做到这一点的简单教程,谢谢。
答案 0 :(得分:1)
我相信你必须使用一个路径,例如('C:\path\filename'
)而不是一个网址(http://example.com
)用于imagejpeg函数
答案 1 :(得分:0)
我建议您使用javascript自动提交表单,并将该图片上传输入类型放在您自动提交的表单标签中。 javascript代码将是这样的<script language="JavaScript">document.formname.submit();</script>
答案 2 :(得分:0)
因此,使用带有Access-Control-Allow-Origin
的jquery $ .post找到了解决方案的Javascript
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var imageObj = new Image();
imageObj.src = 'sample.jpg';
imageObj.onload = function() {
canvas.width = imageObj.width;
canvas.height = imageObj.height;
context.drawImage(imageObj, 0, 0);
var strDataURI = canvas.toDataURL();
strDataURI = strDataURI.substr(22, strDataURI.length);
$.post("http://xxxx.com/upload_img",
{
str: strDataURI
},
function(data){
//to check if any error occurs
alert(data);
});
接受图片的Php文件获得了php allow-control-allow-access解决方案here
// * can be set to something else such as http://example.com/
header('Access-Control-Allow-Origin: *');
$data = base64_decode($_POST["str"]);
$urlUploadImages = "./uploads/";
$nameImage = "test.jpg";
$img = imagecreatefromstring($data);
imagejpeg($img, $urlUploadImages.$nameImage, 100);
imagedestroy($img);