使用JCrop和PHP会话单独裁剪多张图片。

5
我有一个图像裁剪脚本,使用 Jquery Jcrop 插件 逐个裁剪一张图像。 现在我想上传更多的图像,并使用 for 循环逐个裁剪它们。
最好的方法是什么?
我将输入字段设置为 multiple,以便上传多个文件。
编辑:
我已经使用 $max 和 count 编辑了我的代码。但我认为我做错了。如何修复它,使得当我点击裁剪时,它们会逐个裁剪。
这是我的 uploaded.php:
    <?php 
         session_start();
         $max = count($_FILES['userfile']['name']);
         for($i = 0; $i < $max; $i++){
            $target = $_FILES['file'][$i];
         }

         $target = "data/uploads/"; 
         $target = $target . basename( $_FILES['filename']['name']) ; 
         $_SESSION['target_path'] = $target;

         $ok=1; 
         if(move_uploaded_file($_FILES['filename']['tmp_name'], $target)) 
         {
             echo "De afbeelding *". basename( $_FILES['filename']['name']). "* is geupload naar de map 'uploads'";
         } 
         else 
         {
             echo "Sorry, er is een probleem met het uploaden van de afbeelding.";
         } 
    ?> 

谢谢!


我不确定人们是否会阅读大量的代码块。你能否通过分离过程的关键部分来优化问题? - Antony
人们需要所有的代码以便清晰明了。我将问题放在顶部并将代码块放在底部进行编辑。 - Kees Sonnema
1
抱歉,但您的代码与您的问题不符。当您想要进行jQuery操作时,为什么要打印PHP代码呢?请更具体地说明! - SteAp
2个回答

1
我认为您想要的更像是这样:

<?php 
session_start();

$upload_dir = "data/uploads/"; 
for($i = 0; $i < 5; $i++){
     $target = $upload_dir . basename( $_FILES['file']['name'][$i]);
     if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $target)) {
         echo "De afbeelding *". basename( $_FILES['file']['name'][$i]). "* is geupload naar de map 'uploads'";
     } else {
         echo "Sorry, er is een probleem met het uploaden van de afbeelding.";
     }
}

尝试了这个。但是当我上传5张图片时,我会收到“抱歉,出现问题......”的错误消息5次。 - Kees Sonnema
也许看一下裁剪函数会有所帮助。 - Rob Cozzens

1

您需要做一些检查:

1)上传文件,请阅读:http://php.net/manual/en/features.file-upload.multiple.php - 特别是HTML中的input name="userfile[]"和服务器上显示为$_FILES['userfile']['name'][0],...,$_FILES['userfile']['name'][N]

2)move_uploaded_file() 是一个安全检查,确保文件有效,不要离开它 :-)

3)我建议使用 imagemagick 库 (http://php.net/manual/en/imagick.cropimage.php),我知道,Jcrop演示使用GD库,但值得您花时间看看imagemagick。

4)最后,如果一切都失败了,使用 print_r($variable) 确保文件已经到达您的服务器。

5)有时候可能是系统管理员问题,比如无法写入/tmp文件夹、磁盘已满、php.ini中的上传大小限制以及web服务器内置超时。查看phpinfo()也很有帮助。


我现在不能尝试。我会在几个小时后尝试。 - Kees Sonnema
在多文件上传时,它是否适用于一个文件?尝试让它适用于一个文件,然后找出为什么对于两个文件会失败。 - Alvin K.
现在无法尝试,明天会去尝试。 - Kees Sonnema
我只需要计算文件数量,然后逐个裁剪它们。所以你代码中的5必须是类似于$max的东西,然后我首先要做的是什么?$max = count($_FILES['userfile']['name']; ? - Kees Sonnema
我从未解决过这个问题,但现在我对php和jquery更加熟悉了,所以如果需要的话,我可以自己修复它。只是想让你知道我现在知道如何做到这一点。 - Kees Sonnema
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接