我有一個關於上傳和下載系統如何與PHP和MySQL工作的問題。上傳和下載爲我的用戶在php/mysql
我希望能夠上傳文件(最好通過我的網頁),以便只有特定的用戶才能查看可用的文件,並按照他/她的要求下載。
我覺得真的很愚蠢,問這個問題,但文件保存在哪裏?在桌子裏面?或者表指向我的網絡服務器中的目錄?
我問這個,因爲我真的想學習這一點,但連基本的問題是很困難的,甚至制定更別說解決...... :)
期待着一些輸入
乾杯 Adam
我有一個關於上傳和下載系統如何與PHP和MySQL工作的問題。上傳和下載爲我的用戶在php/mysql
我希望能夠上傳文件(最好通過我的網頁),以便只有特定的用戶才能查看可用的文件,並按照他/她的要求下載。
我覺得真的很愚蠢,問這個問題,但文件保存在哪裏?在桌子裏面?或者表指向我的網絡服務器中的目錄?
我問這個,因爲我真的想學習這一點,但連基本的問題是很困難的,甚至制定更別說解決...... :)
期待着一些輸入
乾杯 Adam
PHP文件上傳實際上是一個兩步過程(如果你想將它保存到所需的路徑)。當您嘗試上傳包含名稱,類型,大小和temp_name的文件時,$ _FILES變量具有所有詳細信息。 temp_name實際上包含文件的臨時路徑。然後,您可以使用move_uploaded_file函數將文件移動到您想要的任何路徑。
關於保存在數據庫中,一旦您能夠成功地將文件移動到所需的位置,您可以更新數據庫。我建議,最好是隻爲文件名和ID設置一個表格,我假設你也可以爲用戶設置一個表格。然後您可以有一張可以映射用戶標識和文件標識的新表。這將使您能夠在用戶之間共享訪問權限。當然,還有其他方法可以做到這一點。我認爲這可能是一個簡單的實現。
另外我剛剛意識到,你可能想看看一個簡單的文件上傳的例子。你可以參考this鏈接
您可以使用全局變量$_FILES
以PHP上載文件。 一旦你上傳文件..他們臨時存儲在您的系統的臨時文件夾..
例如..如果您使用XAMMP ..上傳的文件臨時存儲在xammp/tmp/
。
檢查http://php.net/manual/en/reserved.variables.files.php
使用$的解釋_FILES變量也
我會看看這個!謝謝! – user1424728
這一切真的取決於你如何複雜做到這一點。
最簡單的方法是讓用戶上傳文件。使用PHP讀取文件信息($_FILE
)並將文件移動到某個文件夾,並將信息放入數據庫。假設你鏈接用戶和文件,用戶將能夠看到所有文件,然後從列表中下載他們的文件。
更復雜,更安全,更全面的選擇是讓用戶上傳文件。仍然使用PHP來讀取文件信息,並將其存儲在數據庫中。使用id或一些獨特的哈希重命名該文件,以便它不會被覆蓋,並將它們移動到受保護的目錄中,在用戶或任何其他用戶可以訪問的目錄中。爲用戶設置一個下載頁面,該頁面根據散列查找請求的文件,然後如果他們已正確登錄,則向他們提供所請求的文件。
同樣,這取決於您想要實現的複雜程度以及您要實現的目標。當你工作並陷入困境時,回過頭來問一些關於問題特定部分的問題,你一定會得到更多的幫助。
隨着反饋iv'e得到了在這裏,我會看看我的選擇應該是多麼複雜!坦克你花時間回答我! – user1424728
看來你完全是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"> </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> </td>
<td><label for="FF_Song"></label>
<input type="file" name="FF_Song" id="FF_Song"/></td>
</tr>
<tr>
<td>Album Name</td>
<td> </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> </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> </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> </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> </td>
<td> </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; ?> </td>
</tr>
</table>
</form>
</body>
</html>
謝謝,是的,我是新來的,但對於像你們這樣有幫助的人來說,很容易被動機去學習新事物!我要從這裏開始,希望很快我會成爲回答人們的問題之一:) – user1424728
謝謝您花時間回答! – user1424728