php - 在 PHP 中上传文件

标签 php file-upload upload

我正在尝试使用 PHP 上传文件。

我的文件夹结构如下:

我的根 htdocs 文件夹中有一个名为 schemas 的目录。在这个文件夹中,我想为每个用户创建一个新文件夹;在此文件夹中,我将存储特定于用户的文件。

目前,我的代码不完整(不检查文件夹/文件是否已存在,并且可能会出错),但我只是想让基础知识发挥作用。

<?php
if ($_FILES ["bestand"] ["error"] > 0) {
//for error messages: see http://php.net/manual/en/features.fileupload.errors.php
switch ($_FILES ["bestand"] ["error"]) {
case 1 :
$msg = "U mag maximaal 2MB opladen.";
break;
default :
$msg = "Sorry, uw upload kon niet worden verwerkt.";
}
} else {
//check MIME TYPE - http://php.net/manual/en/function.finfo-open.php
$allowedtypes = array ("application/pdf" );
$filename = $_FILES ["bestand"] ["tmp_name"];
$finfo = new finfo ( FILEINFO_MIME_TYPE );
$fileinfo = $finfo->file ( $filename );

if (in_array ( $fileinfo, $allowedtypes )) {
//move uploaded file
$dir = "schemas";
chdir("schemas");
$user_folder = str_replace(" ", "", $_POST['schema']);
mkdir( $user_folder, 0777);
//  echo getcwd();
//  closedir($open);
$folder = "/schemas/" . $user_folder . "/" . $_FILES ["bestand"] ["name"];
echo $folder;
echo $user_folder;

if (move_uploaded_file ( $_FILES ["bestand"] ["tmp_name"], $folder )) {
$msg = "Uw schema is succesvol geupload!";
} else {
$msg = "Upload mislukt.";
}
} else {
$msg = "U kan enkel een pdf uploaden.";
}
}
echo $msg . "<br />"; 

?>

当我尝试此操作时,我收到以下警告:

Warning: move_uploaded_file(/schemas/loesp/loopschema-0-tot-5-kilometer.pdf) [function.move-uploaded-file]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/Sportjefit2/uploadenfile.php on line 30

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/Applications/MAMP/tmp/php/phpMsxxsu' to '/schemas/loesp/loopschema-0-tot-5-kilometer.pdf' in /Applications/MAMP/htdocs/Sportjefit2/uploadenfile.php on line 30

脚本确实创建了文件夹(在本例中是loesp),但似乎没有上传或移动实际文件。我被难住了。

最佳答案

问题是您使用的是绝对路径,该路径从整个计算机的根目录开始。您应该使用相对路径,并且应该从当前工作目录开始。

您已经位于 schemas 文件夹中(在调用 chdir 之后),因此 $folder 应设置为:

$folder = $user_folder . "/" . $_FILES ["bestand"] ["name"];

关于php - 在 PHP 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961232/

相关文章:

node.js - 在 Node.js 服务器上接受请求正文中的二进制文件

php - 如何测试用户是否选择了要上传的文件?

php - 拍照并上传到服务器,无需任何压缩 android

php - 'use' 或 'using' 在编程语言中的用法

php - 为什么 str_replace 不替换问号?

java - 文件上传后,Servlet 中的 response.sendRedirect() 无法正常工作

php - 将文件上传内容正确保存到 MySQL 数据库以作为链接检索

php 和 htaccess,如何仅在一个目录中禁用图像缓存

PHP/MySQL 面试 - 你会如何回答?

php - 以相反顺序显示行 fgetcsv