在php/mysql中为我的用户上载和下载

在php/mysql中为我的用户上载和下载,php,mysql,upload,download,Php,Mysql,Upload,Download,我有一个关于上传和下载系统如何与php和mysql一起工作的问题 我希望能够上传文件(最好是通过我的网页),这样只有特定用户才能查看按某些类别排序的可用文件,并下载他/她想要的文件 问这个问题我觉得很愚蠢,但是文件保存在哪里?在桌子里面?或者该表是否指向我的Web服务器中的目录 我问这个问题是因为我真的很想学这个,但即使是基本问题也很难制定,更不用说解决了……) 期待一些意见 干杯 Adam您可以使用全局变量$\u files在PHP中上载文件。 一旦你上传文件。。它们临时存储在系统的临时文件夹

我有一个关于上传和下载系统如何与php和mysql一起工作的问题

我希望能够上传文件(最好是通过我的网页),这样只有特定用户才能查看按某些类别排序的可用文件,并下载他/她想要的文件

问这个问题我觉得很愚蠢,但是文件保存在哪里?在桌子里面?或者该表是否指向我的Web服务器中的目录

我问这个问题是因为我真的很想学这个,但即使是基本问题也很难制定,更不用说解决了……)

期待一些意见

干杯
Adam

您可以使用全局变量
$\u files
在PHP中上载文件。 一旦你上传文件。。它们临时存储在系统的临时文件夹中

例如。。如果您使用的是XAMMP。。上载的文件临时存储在
xammp/tmp/


检查
http://php.net/manual/en/reserved.variables.files.php
对于使用$\u FILES变量的解释,这实际上取决于您将其设置得有多复杂

最简单的方法是让用户上传一个文件。使用PHP读取文件信息(
$\u file
)并将文件移动到某个文件夹,然后将信息放入数据库。假设您链接用户和文件,用户将能够查看所有文件,然后从列表中下载他们的文件

一个更复杂、更安全、总体上更好的选择是让用户上传他们的文件。仍然使用PHP读取文件信息,并将其存储在数据库中。使用id或一些唯一的散列重命名文件,使其永远不会被覆盖,并将其移动到受保护的目录中,用户或任何其他用户都可以访问该目录。为用户设置一个下载页面,该页面根据哈希值查找请求的文件,如果用户正确登录,则为其提供请求的文件


同样,这取决于你想让它变得多么复杂,以及你试图实现的目标。当你在工作中遇到困难时,回来询问问题的具体部分,你一定会得到更多的帮助。

PHP文件上传实际上是一个两步过程(如果你想将其保存到所需路径)。尝试上载文件时,$\u FILES变量包含所有详细信息,包括名称、类型、大小和临时名称。临时名称实际上包含文件的临时路径。然后,您可以使用move_upload_file函数将文件移动到您想要的任何路径

关于在数据库中保存,一旦能够成功地将文件移动到所需位置,就可以更新数据库。我建议,最好只为文件名和id设置一个表,我假设您也可以为用户设置一个表。然后,您可以拥有一个新表,该表可以映射用户id和文件id。这将使您能够在用户之间共享访问权限。当然,也有其他方法可以做到这一点。我认为这可能是一个简单的实现


另外,我刚刚意识到,您可能想看看一个简单的文件上传示例。您可以参考链接

,您似乎对PHP完全陌生。我给你一个示例代码。使用它并向前推进。这是给我的一个学生的。试试看

<?php
session_start();
if(!isset($_SESSION['Usernm']))
    {
        echo header("Location:../Common/MI_Login.php");
    }
$usernm = $_SESSION['Usernm'];

include("../Connection/Connection.php");
if(isset($_POST['BTN_Submit_mi_songdesc']))
    {
        validate_song();
        if(count($error) == 0)
            {
                $SongNm = $_POST['TXT_Nm'];

                $ext=strchr($_FILES['FF_Song']['name'],".mp3");
                $newfile=str_replace($_FILES['FF_Song']['name'],$SongNm,$_FILES['FF_Song']['name']);

                $song = 'Songs/'.$newfile.$ext; 
                $album = $_POST['DDL_AlbumNm'];
                $singernm = $_POST['DDL_SingerNm'];
                $bitrate = $_POST['DDL_Bitrate'];
                $catg = $_POST['DDL_Catg'];
                $ins_song = "INSERT INTO mi_songdesc (SD_SongName, SD_File, SD_AlbumID, SD_SingerID, SD_Bitrate, SD_CatgID, SD_Approved, SD_UploadedBy) VALUES ('$SongNm','$song','$album','$singernm','$bitrate','$catg','1','$usernm')";
                mysql_query($ins_song) or die(mysql_error());
                move_uploaded_file($_FILES['FF_Song']['tmp_name'],'../'.$song);
                header("Location:".$_SERVER['PHP_SELF']);
            }
        else
            {
                foreach($error as $i)
                    {
                        $test .= $i."<br />";
                    }
            }
    }
function validate_song()
    {
        global $error;
        $error = array();
        if($_POST['TXT_Nm'] == "")
            {
                $error[] = "Error : Enter Song Name";
            }
        if($_FILES['FF_Song']['name'] == "")
            {
                $error[] = "Error : Browse a Song"; 
            }
        if($_POST['DDL_AlbumNm'] == "")
            {
                $error[] = "Error : Select Album";
            }
        if($_POST['DDL_SingerNm'] == "")
            {
                $error[] = "Error : Select Singer";
            }
        if($_POST['DDL_Bitrate'] == "")
            {
                $error[] = "Error : Select Bitrate ";
            }
        if($_POST['DDL_Catg'] == "")
            {
                $error[] = "Error : Select Category";
            }
    }
?>
<!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>Upload Song</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <table width="520" border="1" align="center">
    <tr>
      <td colspan="3" align="center" valign="middle">Enter Song Details</td>
    </tr>
    <tr>
      <td width="185">Song Name</td>
      <td width="16">&nbsp;</td>
      <td width="297"><label for="TXT_Nm"></label>
      <input name="TXT_Nm" type="text" id="TXT_Nm" value="<?php echo $_POST['TXT_Nm']; ?>" size="30" maxlength="30"/></td>
    </tr>
    <tr>
      <td>File</td>
      <td>&nbsp;</td>
      <td><label for="FF_Song"></label>
      <input type="file" name="FF_Song" id="FF_Song"/></td>
    </tr>
    <tr>
      <td>Album Name</td>
      <td>&nbsp;</td>
      <td><label for="DDL_AlbumNm"></label>
        <select name="DDL_AlbumNm" id="DDL_AlbumNm">
        <option value="">Select</option>
        <?php
            $res_alb = mysql_query("SELECT * FROM mi_album");
            while($row_alb = mysql_fetch_array($res_alb))
                {
                    if($_POST['DDL_AlbumNm']==$row_alb['Alb_SlNO'])
                    {
        ?>
        <option  selected="selected" value="<?php echo $row_alb['Alb_SlNO']; ?>"><?php echo $row_alb['Alb_Name']; ?></option>
        <?php
                    }
                    else
                    {
        ?>
        <option value="<?php echo $row_alb['Alb_SlNO']; ?>"><?php echo $row_alb['Alb_Name']; ?></option>
        <?php
                    }
                }
        ?>
      </select></td>
    </tr>
    <tr>
      <td>Singer Name</td>
      <td>&nbsp;</td>
      <td><label for="DDL_SingerNm"></label>
        <select name="DDL_SingerNm" id="DDL_SingerNm">
        <option value="">Select</option>
        <?php
            $res_singer = mysql_query("SELECT * FROM mi_singer");
            while($row_singer = mysql_fetch_array($res_singer))
                {
                    if($_POST['DDL_SingerNm']==$row_singer['SI_SlNo'])
                    {
        ?>
        <option  selected="selected" value="<?php echo $row_singer['SI_SlNo']; ?>"><?php echo $row_singer['SI_Name']; ?></option>
        <?php
                    }
                    else
                    {
        ?>
        <option value="<?php echo $row_singer['SI_SlNo']; ?>"><?php echo $row_singer['SI_Name']; ?></option>
        <?php
                    }
                }
        ?>
      </select></td>
    </tr>
    <tr>
      <td>Bitrate</td>
      <td>&nbsp;</td>
      <td><label for="DDL_Bitrate"></label>
        <select name="DDL_Bitrate" id="DDL_Bitrate">
          <option value="">Select</option>
          <option value="128">128</option>
          <option value="256">256</option>
      </select>
        kbps</td>
    </tr>
    <tr>
      <td>Select Category</td>
      <td>&nbsp;</td>
      <td><label for="DDL_Catg"></label>
        <select name="DDL_Catg" id="DDL_Catg">
        <option value="">Select</option>
        <?php
            $res_catg = mysql_query("SELECT * FROM mi_catg");
            while($row_catg = mysql_fetch_array($res_catg))
                {
                    if($_POST['DDL_Catg']==$row_catg['C_SlNo'])
                    {
        ?>
        <option  selected="selected" value="<?php echo $row_catg['C_SlNo']; ?>"><?php echo $row_catg['C_Name']; ?></option>
        <?php
                    }
                    else
                    {
        ?>
        <option value="<?php echo $row_catg['C_SlNo']; ?>"><?php echo $row_catg['C_Name']; ?></option>
        <?php
                    }
                }
        ?>
      </select></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td align="center" valign="top"><input type="submit" name="BTN_Submit_mi_songdesc" id="BTN_Submit_mi_songdesc" value="Submit" /></td>
    </tr>
    <tr>
      <td colspan="3"><?php echo $test; ?>&nbsp;</td>
    </tr>
  </table>
</form>
</body>
</html>

上传歌曲
输入歌曲详细信息
歌名

谢谢,是的,我是新手,但像你们这样乐于助人的人很容易被激励去学习新东西!我将从这里开始,希望很快我将成为回答人们问题的人:)谢谢你花时间回答!根据我在这里得到的反馈,我将检查我的选项,看看它应该有多复杂!谢谢你花时间回答我!