0

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

所以我试图检查如何允许访问来源,但不明白如何去做。有人可以为我指出一个关于如何做到这一点的简单教程,谢谢。

4

3 回答 3

1

我相信您必须为 imagejpeg 函数使用路径 eg( 'C:\path\filename') 而不是 url ( )http://example.com

于 2013-05-09T04:35:02.620 回答
0

所以找到了使用 jquery $.post 和 Access-Control-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 解决方案

// * 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);
于 2013-05-10T05:06:51.227 回答
0

我建议您使用 javascript 自动提交表单,并将该图像上传输入类型放在您自动提交的表单标记中。javascript代码将是这样的<script language="JavaScript">document.formname.submit();</script>

于 2013-05-09T04:34:59.537 回答