从PHP上传文件到服务器

时间:2014-09-04 05:53:02

标签: php webserver

我使用以下脚本将文件从网站上传到服务器

<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"]=="form1")){
$length = 10;

$randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);

$prefijo =  $randomString;


    $nombre_archivo = $_FILES['userfile']['name'];

    move_uploaded_file($_FILES['userfile']['tmp_name'],"platos/".$prefijo.$nombre_archivo);



    ?>

所选文件将上传到文件夹platos

在另一个网站上,我使用相同的脚本,唯一的更改是文件夹的名称,但不会上传所选文件。

这是第二个网站上使用的脚本:

<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"]=="form1")){
$length = 10;

$randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);

$prefijo =  $randomString;


    $nombre_archivo = $_FILES['userfile']['name'];

    move_uploaded_file($_FILES['userfile']['tmp_name'],"docs/".$prefijo.$nombre_archivo);



    ?>

我无法检测到错误...

已编辑,完整的代码在这里:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Subir Factura PFD</title>

</head>



<body>



<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"]=="form1")){
$length = 10;

$randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);

$prefijo =  $randomString;


    $nombre_archivo = $_FILES['userfile']['name'];

    move_uploaded_file($_FILES['userfile']['tmp_name'],"docs/".$prefijo.$nombre_archivo);



    ?>

    <script>

    opener.document.form1.pdf_factura.value="<?php echo $prefijo.$nombre_archivo;?>";

    self.close();

    </script>





    <?php 

}

else {?>

<form id="form1" name="form1" method="post" action="subirPDF.php" data-ajax="false" enctype="multipart/form-data">

  <p>

    <input name="userfile" type="file" />

  </p>

  <p>

    <input type="submit" name="button" id="button" value="Subir imagen" />

    <input type="hidden" name="enviado" value="form1" />

  </p>

</form>

<?php }?>

</body>

</html>

3 个答案:

答案 0 :(得分:1)

你需要检查&#34; upload_max_filesize&#34;和&#34; post_max_size&#34;你的php.ini文件中的参数。

这些应该大于您尝试上传的文件的大小。

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
; Must be greater than or equal to upload_max_filesize
post_max_size = 2M 

修改php.ini文件后,需要重启HTTP服务器以使用新配置。

如果上述参数正常,则检查目录权限和所有者。

答案 1 :(得分:1)

如果你在Windows机器上运行它:我遇到了同样的问题。由于(奇怪的)文件夹权限,move_uploaded_file()没有为我工作。 我使用PHP函数copy()而不是move_uploaded_file()

希望有所帮助

答案 2 :(得分:1)

检查上传文件的目录的权限:

尝试做:

chmod -R 777 docs

注意:docs目录必须是可写的,以便可以在此目录中添加文件。