该文件未上载到服务器上

时间:2014-02-24 21:12:00

标签: php file upload

我希望用户上传他的简历,然后将其保存到我的服务器并发送带有该链接的电子邮件。但由于某种原因,文件没有上传。请帮忙。

这是我的代码:

<?php
//This function separates the extension from the rest of the file name and returns it 
function findexts ($filename) 
{$filename = strtolower($filename); 
$exts = split("[/\\.]", $filename);  
$n = count($exts)-1; 
$exts = $exts[$n]; 
return $exts;} 

//This applies the function to our file 
$ext = findexts ($_FILES['uploaded']['name']); 

//This line assigns a random number to a variable. 
$ran = rand ();

//This takes the random number (or timestamp) you generated and adds a . on the end
$ran2 = $ran.".";

//This assigns the subdirectory you want to save into... make sure it exists!
$target_path = "/resume/";

//This combines the directory, the random file name, and the extension
$target_paths = $target_path . $ran2.$ext;

move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path);

$file_name="http://www.mydomain.com".$target_paths;

?>

2 个答案:

答案 0 :(得分:0)

除非是Windows(原谅我)框,否则首先要查看文件或文件夹权限。类似Un * x的系统可以(读取:非常严格)。

我通常在开发机器上解决这个问题的方法是:

  • 将自己添加到webservice组,使其成为我的主要(以root身份:$ usermod -g webservice-group username)
  • 将我的用户和webservice组设置为所有文件(来自项目webroot的root:$ chown -R 755 ./*)
  • 将775应用于所有文件和文件夹(来自项目webroot的root:$ chmod -R 775 ./*)

这适用于开发环境。我不能说我在现场环境中完全推荐它。在实时环境中更安全的是:webservice-user所拥有的文件夹:webservice-group(基于debian的通用:www-data:www-data),mod应该是755(webservice具有完全访问权限,而其余的只能执行并阅读)。

答案 1 :(得分:0)

此处没有文件类型验证,没有file_exist等。

如果你想要随机文件名,我会校验文件内容并将其用作文件名,或者有一个循环(而file_exists =&gt; gen_random)。虽然这会慢得多,但您应该考虑使用数据库作为跟踪文件/文件所有者的方法。

该说,你必须检查上传的内容,这样人们才不会将恶意脚本上传到你的网页。您还应该使用错误处理。

如果由于某种原因希望运行此脚本 - 您可以回显变量。 你也可以这样做:if(move_uploaded ... Else ...(所以你知道它失败的地方以及它是否失败)。