我正在处理一个项目,很长一段时间该项目处于中间位置。问题是:存储和检索MySQL数据库中的内容(本地在WAMP服务器中)。
关于项目的简要概述,其中包括以下步骤:
1)用户可以创建帐户, 2)上传文件(可以是文本(.rtf& .txt),图像(.jpg& .png),文档(.doc,.xls,.pptx,.pdf)和视频(.avi& .mp4)) 3)查看这些文件和 4)修改它们。
所以概念是:
1)用户登录或注册, 2)他可以选择以下选项:文本,图像,文档&影片。 3)用户选择任何选项:打开一个新页面,用户可以在缩略图视图中查看他/她现有的内容及其名称和 4)在“添加新内容”的所有内容之上都有一个选项。这里我们有两个条件:
所以,问题是我的团队中没有人(我们在大学,而不是在公司)知道将查询存储到数据库中的查询。上传后,检索文件的名称和缩略图(仅限图像&视频,否则为默认缩略图)在上一页。
我的一位团队成员试图这样做,但上传的文件显示在每个用户的帐户中。
所以我想知道我们该怎么做。我的意思是说,两个问题的具体编程代码。
P.S。:如果可能的话请告诉我如何设置文件选择的限制(验证)(比如在上传FB封面时,它只显示图像而不是所有文件)。
答案 0 :(得分:0)
这应该对你有所帮助。但请务必从 sql injections 中清除此代码。
//This is the directory where images will be saved
$target = "pics/";
$target = $target . basename( $_FILES['Filename']['name']);
//This gets all the other information from the form
$Filename=basename( $_FILES['Filename']['name']);
$Description=$_POST['Description'];
//Writes the Filename to the server
if(move_uploaded_file($_FILES['Filename']['tmp_name'], $target)) {
//Tells you if its all ok
echo "The file ". basename( $_FILES['Filename']['name']). " has been uploaded, and your information has been added to the directory";
// Connects to your Database
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("yourdbname") or die(mysql_error()) ;
//Writes the information to the database
mysql_query("INSERT INTO tbl_files (Filename,Description)
VALUES ('$Filename', '$Description')") ;
} else {
//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
答案 1 :(得分:0)
// Connect to your Database
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("dbname") or die(mysql_error()) ;
// directory where images will be moved
$file=mktime()."_".$_FILES['files']['name'];
$target = "images/" . $file;
//This gets all the other information from the form
$description=$_POST['Description'];
//Writes the Filename to the server
if(move_uploaded_file($_FILES['files']['tmp_name'], $target)) {
//Tells you if its all ok
echo "The file has been uploaded, and your information has been added to the directory";
//Writes the information to the database
mysql_query("INSERT INTO tbl_files (Filename,Description)
VALUES ('$file', '$description')") ;
} else {
//Gives and error if its not
echo "Sorry, there was a problem uploading the file.";
}
答案 2 :(得分:0)
你的问题太宽泛了。这里有一些提示。在尝试完成后,回过头来提出更具体的问题。
"用户"管理是一项非常重要的任务。您需要管理页面来创建新用户,删除用户等.A"最终用户" 不应该是MySQL"用户&#34 ;;应该只有一个或两个MySQL用户(" app-user")。 PHP代码将验证一个"最终用户",使用您自己的表来存储他们的名字,密码等.PHP代码将以app-user身份连接到mysql。
媒体文件应作为文件存储在磁盘上。这样可以轻松使用HTML代码显示图像(<img...>
)或播放视频。
缩略图 - 简单的答案是像对待其他媒体一样对待它们。 (在一个项目中,我将它们存储在数据库中,并将它们笨拙地转换为base64以包含在<img...>
中。)
缩略图 - 可能是&#34; exif数据&#34;中的缩略图。但我不相信它存在。相反,我会在PHP中使用image*
例程来从图像创建缩略图。 (我不知道如何处理视频的缩略图。)
PHP具有上传媒体的功能。它有点笨拙和扭曲;学习手册。
PHP对于访问文件系统很挑剔(出于安全原因)。您需要戳洞(请参阅open_basedir
)以允许访问。
您需要将信息从一个页面传递到另一个页面。请记住,HTML页面是&#34;无状态&#34;,因此一个页面中的 nothing 将隐含地提供给下一个页面。您可能能够将所有内容放入网址(...?user=123&img=abc...
)。但可能存在安全问题。或者你可能需要获得&#34; cookies&#34;参与。
&#34;用户点击...&#34; - 可能需要从OnClick=DoSomeFunction(...)
开始的JavaScript。你可能需要AJAX,但听起来不像。
否则,HTML,PHP和MySQL可以处理您需要的一切。
这些笔记可能包含数千行PHP,包括几十个SQL查询。在你的团队之间分配项目,这样就不是每个人都必须精通各个方面。建议细分:用户管理;媒体处理;页面流(点击,传递args,安全性等);数据库抽象层。