2014-10-22 59 views
1

我在我的网站上设置了一个文件上传服务。以下是我走到这一步,继续收到我的PHP文件上传系统的两个错误

upload.php的

<form action="uploader.php" method="post" enctype="multipart/form-data"> 
<input type="file" name="myFile"> 
<br> 
<input type="submit" value="Upload"> 
</form> 

uploader.php

<?php 
define("UPLOAD_DIR", "/uploads"); 

if (!empty($_FILES["myFile"])) { 
    $myFile = $_FILES["myFile"]; 

    if ($myFile["error"] !== UPLOAD_ERR_OK) { 
     echo "<p>An error occurred.</p>"; 
     exit; 
    } 


    // ensure a safe filename 
    $name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]); 

    // verify the file is a GIF, JPEG, or PNG 
    $fileType = exif_imagetype($_FILES["myFile"]["tmp_name"]); 
    $allowed = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG); 
    if (!in_array($fileType, $allowed)) { 
     // file type is not permitted 
     echo "<p>Unable to save file.</p>"; 
     exit; 
    } 



    // don't overwrite an existing file 
    $i = 0; 
    $parts = pathinfo($name); 
    while (file_exists(UPLOAD_DIR . $name)) { 
     $i++; 
     $name = $parts["filename"] . "-" . $i . "." . $parts["extension"]; 
    } 

    // preserve file from temporary directory 
    $success = move_uploaded_file($myFile["tmp_name"], 
     UPLOAD_DIR . $name); 
    if (!$success) { 
     echo "<p>Unable to save file.</p>"; 
     exit; 
    } 

    // set proper permissions on the new file 
    chmod(UPLOAD_DIR . $name, 0644); 
} 

有一个在我的目录名为上传一个文件夹,我想我的文件上传到那里。

但是,当使用XAMMP运行它时,我尝试上传一个名为example.png的图像,它出现以下错误。

Warning: move_uploaded_file(/uploadsexample.png): failed to open stream: Permission denied in C:\xampp\htdocs\assembly\uploader.php on line 37 

Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\phpBAE5.tmp' to '/uploadsexample.png' in C:\xampp\htdocs\assembly\uploader.php on line 37 
Unable to save file. 

如果你能帮我解决我的问题,我将不胜感激!谢谢。

回答

3

添加结尾斜线/

define("UPLOAD_DIR", "/uploads"); 
          ^missing slash 

将其更改为:

define("UPLOAD_DIR", "/uploads/"); 

通知你得到=>to '/uploadsexample.png'

Warning: move_uploaded_file(/uploadsexample.png): 
            ^
错误10

它在uploads之后,在uploads和文件名之间缺少斜线。

另外,为了安全起见,如果仍然会抛出一个错误消息,说明它不会让您使用另一个“权限被拒绝”消息进行上传,请确保该文件夹确实可写且设置了正确的写入权限为了它。

N.B:

您可能需要修改/uploads/取决于脚本的执行位置uploads/../uploads/

+0

这是正确的,“权限被拒绝”是因为它由于缺少“/”而导致混淆 – Parker 2014-10-22 05:33:02

+0

Warning:move_uploaded_file(/uploads/example.png):未能打开流:C:中没有这样的文件或目录: \ xampp \ htdocs \ assembly \ uploader.php on line 37 Warning:move_uploaded_file():无法在C:\ xampp中将'C:\ xampp \ tmp \ php340B.tmp'移动到'/uploads/example.png' \ htdocs \ assembly \ uploader.php在线37 无法保存文件。是我现在得到的。该文件夹可以写入权限。 – user3317455 2014-10-22 05:33:24

+0

@ user3317455文件夹是否可写?确保它是'0755'。 – 2014-10-22 05:34:18