在php中上载图片而不手动提交表单

在php中上载图片而不手动提交表单,php,image,upload,gd,Php,Image,Upload,Gd,我有一个使用php合并的图像(这是在localhost中)。我想自动上传这个文件到一个服务器php文件,该文件将接受它或上传到一个服务器文件夹 通常的方法是使用一个包含多部分的表单,然后提交表单来上传它。我需要将图像本身传递给php或自动提交表单,而无需手动执行 我试图创建一个目录图片设置权限为777,并试图保存图像到服务器 $outfile = "http://XXXXXX.com/pictures/testing.png"; $quality = 100; imagejpeg($output

我有一个使用php合并的图像(这是在localhost中)。我想自动上传这个文件到一个服务器php文件,该文件将接受它或上传到一个服务器文件夹

通常的方法是使用一个包含多部分的表单,然后提交表单来上传它。我需要将图像本身传递给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.

所以我试着检查如何允许访问源代码,但不知道如何做到这一点。有人能告诉我一个很好的简单教程吗,谢谢。

我建议您使用javascript自动提交表单,并将图像上传输入类型放入正在自动提交的表单标记中。javascript代码如下所示
document.formname.submit()

我认为您必须使用路径,例如(
'C:\Path\filename'
),而不是url(
http://example.com
)用于imagejpeg函数

,因此找到了使用jquery$.post和访问控制Allow Origin的解决方案

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解决方案


您可以手动将文件放入输入类型文件,而不实际单击它并选择文件吗?@jhdj您不能。这将是一个大的安全问题。好的,谢谢你提供的信息。我将尝试签出CanvasTodaTaul来做这件事。需要澄清这是从本地主机到服务器的,所以我认为('C:\path\filename')不起作用,我将更新问题以澄清这一点,谢谢
// * 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);