2011-03-22 49 views
0
Warning: fopen() expects parameter 1 to be string, array given in /home/speedycm/public_html/speedyautos/carphoto.php on line 42 

Warning: filesize() [function.filesize]: stat failed for Array in /home/speedycm/public_html/speedyautos/carphoto.php on line 43 

Warning: fread(): supplied argument is not a valid stream resource in /home/speedycm/public_html/speedyautos/carphoto.php on line 43 

Warning: fclose(): supplied argument is not a valid stream resource in /home/speedycm/public_html/speedyautos/carphoto.php on line 44 

每当试图在我的网站上上传图片时我都会收到这些错误消息,而且我不知道如何将它们整理出来。任何人都可以请帮忙?线36-59读:尝试上传图片时重复发出警告

$CarInfo->Load(); 
if ($hidaction == "addphoto") 
{ 
    $ctrP = 0; 
    foreach ($_FILES['pics'] as $pics) 
    { 
     if ($_FILES['pics']['name'][$ctrP] <> "") 
     { 
      if (is_uploaded_file($_FILES['pics']['tmp_name'][$ctrP]) or die("No Image: " . $_FILES['pics']['name'][$ctrP])) 
      { 
       $ext = substr(strrchr($_FILES['pics']['name'][$ctrP], "."), 1); 
       $fp = fopen($_FILES["pics"]["tmp_name"], 'rb'); 
       $contents = fread($fp, filesize($_FILES["pics"]["tmp_name"])); 
       fclose($fp); 
       if (preg_match("/system/", $contents) OR preg_match("/<\?/", $contents)) 
       { 
        $error .= "Invalid image: {$_FILES['pics']['name'][$ctrP]}<br />"; 
        //$pieces = explode(".", $_FILES['pics']['name'][$ctrP]); 
        //$ext = $pieces[count($pieces) - 1]; 
       } elseif ((in_array($ext, $types_array)) AND ($_FILES['pics']["size"][$ctrP] < (MAXFILE_SIZE * 1000000))) 
       { 
        $orgImageName = "cid" . $property_id . "_" . str_replace(" ", "_", $_FILES['pics']['name'][$ctrP]); 
        $thmImageName = "thumb_cid" . $property_id . "_" . str_replace(" ", "_", $_FILES['pics']['name'][$ctrP]); 
        $dtlImageName = "dtl_cid" . $property_id . "_" . str_replace(" ", "_", $_FILES['pics']['name'][$ctrP]); 

提前很多感谢和抱歉野生压痕BTW :-)

+1

我改进了你的野生缩进。 – Anomie 2011-03-22 02:19:52

+0

谢谢!你是怎么做到的? – methuselah 2011-03-22 02:30:36

+1

缩进4个空格。没有标签。 – Anomie 2011-03-22 02:31:21

回答

2

我不是一个PHP的人,但在我看来,就好像_FILES是三字符串的三维数组。有时候你使用三个指标:

$ _FILES [ '图片'] [ 'tmp_name的值'] [$ CTRP]

但在fopen()调用,你只使用两个;这意味着你将一个字符串数组传递给fopen(),这是错误的。您需要在此行上的第三个索引:

$ fp = fopen($ _ FILES [“pics”] [“tmp_name”],'rb');

1

您忘记正确引用加载到导致错误的行中上传的$ _FILES数组中的多个图像。

如果您有:

$fp = fopen($_FILES["pics"]["tmp_name"], 'rb'); 
$contents = fread($fp, filesize($_FILES["pics"]["tmp_name"])); 

应该是这样的:

$fp = fopen($_FILES["pics"]["tmp_name"][$ctrP], 'rb'); 
$contents = fread($fp, filesize($_FILES["pics"]["tmp_name"][$ctrP])); 

什么你发送是一个数组($_FILES["pics"]["tmp_name"])成需要一个字符串的函数,这应该是值从阵列中拨下($_FILES["pics"]["tmp_name"][$ctrP])。

相关问题