2013-04-18 36 views
0

我想为我的web应用程序创建一个图像上传。我试着在网上搜索如何创建一个解决方案,但没有多少运气找到任何真正的帮助。我也不确定我应该用什么词来搜索正确的结果。我确实在W3Schools网站上找到了一些(http://www.w3schools.com/php/php_file_upload.asp),但我仍然无法将它上传到我的服务器。不知道是什么问题,因为我按照网站上的说明进行设置。我也发现这(JavaScript: Upload file),但它不完全是我想要它做的。我仍然需要php脚本,因为图像不是我要发送到服务器的唯一东西。我还将发送其他信息存储到服务器上的数据库中,例如图像名称和与图像相关的其他信息。试图创建一个简单的图像上传

我正在使用的php脚本,我从W3S网站下面下面。我坚持的地方在于,一旦我点击提交按钮,我的页面就崩溃了,或者我应该说我收到了一个服务器错误,但没有关于是什么原因造成的。任何帮助将不胜感激

<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$extension = end(explode(".", $_FILES["file"]["name"])); 
if (($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjepg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 20000) 
&& in_array($extension, $allowedExts)) { 
    if ($_FILES["file"]["error"] > 0) { 
     echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " KB<br>"; 
     echo "Stored in: " . $_FILES["file"]["tmp_name"]; 

     if (file_exists("public_hmtl/uploads/" . $_FILES["file"]["name"])) { 
      echo $_FILES["file"]["name"] . " already exists. "; 
     } 
     else { 
      move_uploaded_file($_FILES["file"]["tmp_name"], "public_hmtl/uploads/" . $_FILES["file"]["name"]); 
      echo "Stored in: " . "public_hmtl/uploads/" . $_FILES["file"]["name"]; 
     } 
    } 
} 
else { 
    echo "Invalid file"; 
} 
?> 

这里也是表格的html。

<!DOCTYPE html> 
    <html> 
    <head> 
     <title>Location details</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
    </head> 
    <body> 
     <div> 
      <form enctype="multipart/form-data" method="post" action="scripts/snap.php"> 
     <!--<p> 
      <input id="plat" class="plat" name="plat" type="hidden" value="" /> 
      <input id="plon" class="plon" name="plon" type="hidden" value="" /> 
     </p>--> 
     <div class="row"> 
      <label for="file">Select an image to Upload</label><br /> 
      <input type="file" name="file" id="file" /> 
     </div> 
     <div id="filename"></div> 
     <div id="fileSize"></div>  
     <div id="fileType"></div> 
     <div class="row"> 
      <input type="submit" name="submit" value="Submit" /> 
      <!--<input type="button" onclick="uploadFile()" value="Upload" />--> 
     </div> 
     <div id="progressNumber"></div> 
    </form> 
</div> 

+1

文件夹名称public_hmtl /上传/或的public_html /上传? –

+0

你是什么意思?我将要保存所有图像的文件夹将位于public_html目录中的上传文件夹中 – RenegadeScar

+0

什么消息显示.... – Hackerman

回答

2

在if语句中,存在不匹配打开和关闭标签,正确它

if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjepg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png") 
) 
&& ($_FILES["file"]["size"] < 20000) 
&& in_array($extension, $allowedExts)) 
+0

谢谢,这似乎已修复它。现在我需要处理它可以接受的文件类型。即使我给一个.jpg文件上传它告诉我,它是一个无效的文件类型。 – RenegadeScar

+1

@RenegadeScar我认为它的文件大小大于20000 –

+0

是的,他们的文件大于20000或20KB。我只需要提高这个数字,我很乐意去。非常感谢Man! – RenegadeScar

0

这将是很好,如果你可以在你得到这个服务器错误扩大。我没有足够的代表评论,所以不得不在这里要求澄清。

  • 你要上传什么服务器? public_html/uploads /目录是否真的存在?你用来指向它的路径是否正确?
  • 什么是您的临时上传目录设置为?
  • 此外,请检查您可能正在拾取文件扩展名。也许使用pathinfo()。下面的例子。

    $ extension = pathinfo($ _ FILES ['file'] ['name']);

    $ ext = $ extension ['extension'];

+0

是的,我今天刚刚添加了public_html/uploads /目录。我使用的服务器是在芝加哥支付的服务器。至于服务器错误,我在上面的评论中回答说,我没有收到任何有关服务器错误的良好信息。这只是我的浏览器告诉我有一个错误。我没有使用临时上传目录。我遵循我在上面链接的网站上找到的说明。我还会试试最后一点。 – RenegadeScar