2009-12-14 74 views
1

的代码如下所示:PHP上传文件

HTML

<form action="contact.php" method="post" enctype="multipart/form-data" onsubmit="return Validare();"> 

    <input type="text" name="nume" value="Nume" class="contact" id="Nume" onclick="if(this.value=='Nume')this.value='';" onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')this.value='Nume'" /><font color="red">*</font><br /> 
      <input type="text" name="email" value="Email" class="contact" id="Email" onclick="if(this.value=='Email')this.value='';" onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')this.value='Email'" /><font color="red">*</font><br /> 
      <input type="text" name="telefon" value="Telefon" class="contact" id="Telefon" onclick="if(this.value=='Telefon')this.value='';" onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')this.value='Telefon'" /><br /> 
      <textarea name="mesaj" rows="10" class="contact" id="Mesaj" onclick="if(this.value=='Mesaj')this.value='';" onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')this.value='Mesaj'">Mesaj</textarea> 

<input type="file" name="file[]" /> 
<input type="file" name="file[]" /> 
<input type="file" name="file[]" /> 
<input type="submit" value="Trimite" /> 
</form> 

PHP

for($i=0; $i<3; $i++){ 
if($_FILES["file"]["size"][$i] > 0){ 
    $rand = rand(10000, 99999); 
    $name = $rand.rand(10000, 99999).$_FILES["file"]["name"][$i]; 
      $tmp_name = $_FILES["file"]["tmp_name"][$i]; 
    $target_path_big = "http://biroutraduceri.net/fisiere/".$name; 
    move_uploaded_file($tmp_name, "fisiere/".$name); 
} 
} 

的JavaScript

<script> 
function Validare(){ 
    if(document.getElementById("Nume").value.replace(/^\s+|\s+$/g,'') == "" || document.getElementById("Nume").value.replace(/^\s+|\s+$/g,'') == "Nume"){ 
     alert("Numele nu este valid!"); 
     return false; 
    } 
    if(document.getElementById("Email").value.replace(/^\s+|\s+$/g,'') == "" || document.getElementById("Email").value.replace(/^\s+|\s+$/g,'') == "Email"){ 
     alert("Email-ul nu este valid!"); 
     return false; 
    } 
    if(document.getElementById("Mesaj").value.replace(/^\s+|\s+$/g,'') == "" || document.getElementById("Mesaj").value.replace(/^\s+|\s+$/g,'') == "Mesaj"){ 
     alert("Mesajul nu este valid!"); 
     return false; 
    } 
    return true; 
} 
</script> 

当我按下提交没有发生。该文件未上传。

我在哪里错了?

+3

可以吗发贴'Validare()'呢?它应该返回true以让表单提交。 – catchmeifyoutry 2009-12-14 20:27:43

+0

Validare()返回true。我测试过了。 – Emanuel 2009-12-14 20:33:41

+0

$ tmp_name = $ _FILES [“file”] [“tmp_name”] [$ i]; 这是来自for循环。 – Emanuel 2009-12-14 20:36:27

回答

0

可能是一个权限问题,你的脚本有权在写“fisiere /".$名称是” fisiere /".$名字真的,你觉得这是什么?您可能想要使用绝对路径。

编辑:您不能将图像写入到一个HTTP URL,你需要将它写入到本地文件路径,你需要确保PHP有权限写入该路径/目录

+0

我已经尝试使用“http:// url/fisiere /”; 。 $名称,但没有。 – Emanuel 2009-12-14 20:53:29

-1

我猜onsubmit="return Validare();"是你为什么要使用此rand函数反正返回false

,尝试时间()它的更好,我认为

+0

请勿使用time()。他正在使用rand()函数尝试获取伪随机数。如果你使用time(),你不会得到这个,因为可以在给定的秒钟内上传多个文件。 – Brad 2009-12-14 20:30:56

-1

你想$_FILES['file'][$i]['size']

+1

对不起,但那是错误的:http://www.php.net/manual/en/features.file-upload.multiple.php – Powerlord 2009-12-14 20:31:08

1

$ tmp_name的值永远不会初始化为任何事情。

$ tmp_name应设置为等于$ _FILES ['file'] ['tmp_name'] [$ i];

+0

2。是不正确的:http://www.php.net/manual/en/features.file-upload.multiple.php – 2009-12-14 20:36:04

+0

@Lucas你指的是哪一部分? – 2009-12-14 20:48:00

+0

这是我删除的评论。 – Brad 2009-12-14 20:50:23

0

你真的不需要onsubmit =“return Validare();”甚至写错了。 和move_uploaded_file($ _ FILES ['file'] ['tmp_name'],$ target_path))是您正确的代码

+0

您仍然需要$ _FILES ['file'] ['tmp_name']末尾的索引,以便引用正确的文件。 – Brad 2009-12-14 20:35:07

+0

我需要这个onsubmit =“return Validare();”进行验证。 – Emanuel 2009-12-14 20:35:18

+0

这是真实的,在大多数情况下是有效的,我同意:) – streetparade 2009-12-14 20:37:00

0

您忘了设置变量$ tmp_name。如在$tmp_name = $_FILES["file"]["tmp_name"][$i]; 否则,根据我自己的测试,似乎可以。

否则,在你的“for”循环之前加入一个print_r($_FILES);,再在你的循环内打印几张和一个is_readable($tmp_name)检查,以更精细地试图找出问题的根源。

+0

in echo is_readable($ tmp_name);它显示1. – Emanuel 2009-12-14 20:43:27

2

您的PHP代码有错误,$ tmp_name从不设置。

更正代码

for($i=0; $i<3; $i++){ 
    if($_FILES["file"]["size"][$i] > 0){ 
     $rand = rand(10000, 99999); 
     $name = $rand.rand(10000, 99999).$_FILES["file"]["name"][$i]; 
     $target_path_big = "http://biroutraduceri.net/fisiere/".$name; 
     move_uploaded_file($_FILES["file"]["tmp_name"][$i], "fisiere/".$name); 
    } 
} 
+0

问题不在那里。 – Emanuel 2009-12-14 21:13:14

+0

并且是目标目录“is_writeable”?连同所有必需的unix文件权限? 例如,该目录可以被chmoded为0775“rwxrwxr-x”,并将组设置为“www”或“apache”(或任何PHP进程运行的)。 – DrYak 2009-12-16 14:55:55