【问题标题】:upload and download for my users in php/mysql在 php/mysql 中为我的用户上传和下载
【发布时间】:2012-06-04 03:34:28
【问题描述】:

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

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

我觉得问这个真的很愚蠢,但是文件然后保存在哪里?桌子里面?还是该表指向我的网络服务器中的目录?

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

期待一些意见

干杯 亚当

【问题讨论】:

    标签: php mysql upload download


    【解决方案1】:

    您可以使用全局变量$_FILES 在 PHP 中上传文件。 上传文件后..它们会临时存储在系统的临时文件夹中..

    例如..如果您使用 XAMMP.. 上传的文件临时存储在 xammp/tmp/

    查看http://php.net/manual/en/reserved.variables.files.php 了解使用 $_FILES 变量的说明

    【讨论】:

      【解决方案2】:

      这完全取决于你把它弄得有多复杂。

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

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

      同样,这实际上取决于您想要使其变得多复杂以及您想要实现的目标。当您处理它并遇到困难时,请回来就问题的特定部分提出问题,您一定会得到更多帮助。

      【讨论】:

      • 根据我收到的反馈意见,我将查看我的选项,了解它应该有多复杂!坦克你花时间回答我!
      【解决方案3】:

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

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

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

      【讨论】:

      • 感谢您花时间回答!
      【解决方案4】:

      看来您对 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>
      

      【讨论】:

      • 谢谢你,是的,我是新手,但是像你们这样乐于助人的人很容易激发学习新事物的动力!我将从这里开始,希望很快我会成为回答人们问题的人:)
      猜你喜欢
      • 2014-03-23
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多