Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP上载文件时出错_Php_Html - Fatal编程技术网

使用PHP上载文件时出错

使用PHP上载文件时出错,php,html,Php,Html,我得到了以下PHP代码: SESSION_start(); $conn = mysql_connect("localhost", "root", ""); if(!$conn) die("Cannot connect to the database server: <br /> ".mysql_error()); $db = mysql_select_db("tsismics", $conn); if(!$db) die("Cannot connect to the da

我得到了以下PHP代码:

SESSION_start();

$conn = mysql_connect("localhost", "root", "");
if(!$conn) die("Cannot connect to the database server: <br />
    ".mysql_error());

$db = mysql_select_db("tsismics", $conn);
if(!$db) die("Cannot connect to the database: <br />
    ".mysql_error());

 $userId = $_SESSION['userId'];
 $dir = $userId."/".$_FILES['profpic']['name'];
 $filename = $_FILES['profpic']['name'];

 $target = "profile_pictures/".$userId."/";
 echo $target;

 mysql_query("UPDATE users SET photo=\"$dir\" WHERE userId=$userId", $conn);

 if(move_uploaded_file($_FILES['profpic']['tmp_name'], $target)) {
     echo "The file ". basename( $_FILES['profpic']['name']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else { 
     echo "Sorry, there was a problem uploading your file."; 
 }
SESSION_start();
$conn=mysql_connect(“本地主机”、“根目录”、“根目录”);
如果(!$conn)死亡(“无法连接到数据库服务器:
“.mysql_error()); $db=mysql\u select\u db(“tsismics”,$conn); 如果(!$db)死亡(“无法连接到数据库:
“.mysql_error()); $userId=$\会话['userId']; $dir=$userId.“/”$_文件['profpic']['name']; $filename=$_文件['profpic']['name']; $target=“profile_pictures/”$userId./”; echo$target; mysql_查询(“更新用户集照片=\”$dir\“其中userId=$userId”,$conn); 如果(移动上传的文件($文件['profpic']['tmp\u名称]],$target)){ echo“The file”.basename($_FILES['profpic']['name'])”已上载,并且您的信息已添加到目录中; } 否则{ echo“抱歉,上载文件时出现问题。”; }
这是我的HTML块:

<form method="POST" action="upload-prof-pic.php" enctype="multipart/form-data">
    <input type="file" value="upload profile pic" name="profpic"/>
    <input type="submit" value="Upload" id="prof-pic-submit"> 
</form>

上载时,它会在文件夹:profile\u pictures中创建一个以userId作为文件名且不带任何扩展名的文件


我忘了发这个。。它有两个错误:

警告:移动上传的文件(profile\u pictures/1/3.png):无法打开流:第22行的C:\wamp\www\project\upload-prof-pic.php中没有此类文件或目录

警告:move_upload_file():无法将“C:\wamp\tmp\php2070.tmp”移动到C:\wamp\www\project\upload-prof-pic.php第22行的“profile_pictures/1/3.png”中的“profile_pictures/1/3.png”。另外,请注意一件事(基于您更新的问题),因为您正试图将每个pic存储在一个以用户id命名的新目录中,您还需要创建该目录,并且显然具有写入权限

应该是

$target = "profile_pictures/".$userId."/".$filename;
哦,仍然在使用著名的
mysql.*
api?

哦,还有一件事需要注意(根据您更新的问题),因为您试图将每个pic存储在一个以用户id命名的新目录中,所以您还需要创建该目录,并且显然具有写入权限

应该是

$target = "profile_pictures/".$userId."/".$filename;

哦,仍然在使用著名的
mysql.*
api?

我不确定这是不是它或者它是否有效,但请尝试更改
SESSION\u start()
会话_start()

看起来您可能想要删除/,或者更好地创建时间/文件名的md5,因此profile_pictures/1/3.png正在寻找profile_pictures/1作为目录

使用这样的东西可能会有用

$file = md5($_FILES['profpic']['name'] . microtime(true)) . "." . pathinfo($_FILES['profpic']['name'], PATHINFO_EXTENSION);
应该为您提供类似于
790540225255fb1a26e4bc422aef54eb4.png的内容
使用pathinfo()保留扩展名

编辑: 再次查看您的问题,该文件不是作为文件夹提供给您的
/1
。我建议将所有个人资料头像放在一个文件夹中,而不是每个用户都有一个包含一个文件的文件夹。更改以下行

$target = "profile_pictures/".$userId."/";


我仍然建议使用如上所述的md5来克服相同的文件名上载问题

我不确定这是不是它或者它是否有效,但请尝试更改
会话_start()
会话_start()

看起来您可能想要删除/,或者更好地创建时间/文件名的md5,因此profile_pictures/1/3.png正在寻找profile_pictures/1作为目录

使用这样的东西可能会有用

$file = md5($_FILES['profpic']['name'] . microtime(true)) . "." . pathinfo($_FILES['profpic']['name'], PATHINFO_EXTENSION);
应该为您提供类似于
790540225255fb1a26e4bc422aef54eb4.png的内容
使用pathinfo()保留扩展名

编辑: 再次查看您的问题,该文件不是作为文件夹提供给您的
/1
。我建议将所有个人资料头像放在一个文件夹中,而不是每个用户都有一个包含一个文件的文件夹。更改以下行

$target = "profile_pictures/".$userId."/";


我仍然建议使用如上所述的md5来克服相同的文件名上载问题

我认为您正在尝试创建文件夹或目录并一起上载文件。 在这种情况下,我建议您首先执行此命令:

mkdir("profile_pictures/".$userId , 700);
在上载文件之前创建目录


希望不会有问题…

我认为您正在尝试创建文件夹或目录,并一起上载文件。 在这种情况下,我建议您首先执行此命令:

mkdir("profile_pictures/".$userId , 700);
在上载文件之前创建目录


希望不会有问题…

正如我告诉您的,您早期发布的错误显示文件夹“1”不存在或至少没有上传到的权限,因此我认为您必须检查它是否不存在,然后如果是,创建它,然后使用
chmod
将其权限更改为合适的权限,然后继续上传过程。希望这能解决您的问题:)

正如我告诉您的,您早期发布的错误显示文件夹“1”不存在或至少没有上传到的权限,因此我认为您必须检查它是否不存在,然后如果是,创建它,然后使用
chmod
将其权限更改为合适的权限,然后继续上传过程。希望这能解决您的问题:)

您需要:

  • 。(文件参数的路径,而不是文件夹)
  • (见红色矩形?)
  • 例如:

    session_start();
    
    if(!empty($_FILES['profpic'])){
    $conn = mysql_connect("localhost", "root", "");
    if(!$conn) die("Cannot connect to the database server: <br />
        ".mysql_error());
    
    $db = mysql_select_db("tsismics", $conn);
    if(!$db) die("Cannot connect to the database: <br />".mysql_error());
    
    $userId = $_SESSION['userId'];
    $filename = $_FILES['profpic']['name'];
    
    $target = "profile_pictures/".$userId.'/'.$filename;
    echo $target;
    
    mysql_query("UPDATE users SET photo=\"$dir\" WHERE userId=$userId", $conn);
    if(!file_exists("profile_pictures/".$userId)){
       mkdir("profile_pictures/".$userId, 700);
    }
    if(move_uploaded_file($_FILES['profpic']['tmp_name'], $target)) {
         echo "The file ". basename( $_FILES['profpic']['name']). " has been uploaded, and your information has been added to the directory"; 
     } 
     else { 
         echo "Sorry, there was a problem uploading your file."; 
     }
    }
    
    session_start();
    如果(!空($_文件['profpic'])){
    $conn=mysql_connect(“本地主机”、“根目录”、“根目录”);
    如果(!$conn)死亡(“无法连接到数据库服务器:
    “.mysql_error()); $db=mysql\u select\u db(“tsismics”,$conn); 如果(!$db)死亡(“无法连接到数据库:
    ”。mysql_error()); $userId=$\会话['userId']; $filename=$_文件['profpic']['name']; $target=“profile_pictures/”$userId./'.$filename; echo$target; mysql_查询(“更新用户集照片=\”$dir\“其中userId=$userId”,$conn); 如果(!file_存在(“profile_pictures/”$userId)){ mkdir(“profile_pictures/”$userId,700); } 如果(移动上传的文件($文件['profpic']['tmp\u名称]],$target)){ echo“The file”.basename($_FILES['profpic']['name'])”已上载,您的信息已被删除