在PHP上传图片而无需手动提交表单

时间:2013-05-09 04:26:32

标签: php image upload gd

我有一个使用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.

所以我试着查看如何允许访问来源,但不明白该怎么做。有人可以给我一个关于如何做到这一点的简单教程,谢谢。

3 个答案:

答案 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);