附件都是直接存在网页空间里的,一般不放在库里。何况据我所知只有图片文件和一部分格式的视频文件才能以附件的形式导入。
成都创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为漳平企业提供专业的成都做网站、成都网站制作,漳平网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
通常情况下库里面只是用一个字段来存放该附件的地址而已。需要用的时候就直接调用这个地址来访问这个附件。
define(UPLOAD_ROOT,'你的上传文件夹路径');
function fake_random_name($string,$key){
#伪代码 随便根据用户名和上传时间生成一个伪随机的文件名作为上传以后的用户名
#但解码的条件是可以根据文件名判断出文件所有者的用户名和上传时间
#需要从数据库取出用户的密匙 才能进行解密 密匙是用户名的前5个字符
#具体加密解密的代码实现 请参照PHP标准扩展库 Mcrypt扩展下的N种方法
return $fake_random_name;
}
if(!is_writbale(UPLOAD_ROOT)){
die('you need chown the dir for your uploading file,make it writable~');
}else{
move_uploaded_file($_FILES['POST过来的表单名']['tmp_name'];
/*
* 这个方法会自动调用is_upload_file()方法 检测是否是合法的http rfc1867协议上传的文件
* 当然了 你也可以限制是否是你需要的合法文件类型 $_FILE[$_POST[name]][type] 比如是否是pdf img文件 都可以
*/
$dbh = new mysqli('localhost','root','sa','your_db_name');#生成中可以include进来 DSN放到根目录以外去 保护连接文件
$sec_key = substr($_SESSION['loginname'],0,5);
#密匙
$file_name = fake_random_name($_FILES['POST过来的表单名']['tmp_name'],$sec_key);
#加密后的名字
$q_str = "insert into tb(owner,location)values($_SEESION['loginname'],UPLOAD_ROOT.DIRECTORYSLASH.$file_name))";/SQL
$dbh-query($q_str);
if($dbh-num_rows()==1) echo "上传成功,已经插入数据库文件细节(加密)";
}
?php
//var_dump($_FILES);
for($i=1;$i3;$i++){
//判断文件上传是否出错
if($_FILES["myfile$i"]["error"]0){
switch($_FILES["myfile$i"]["error"]){
case 1; echo"文件过大(大于php.ini 配置文件的限制)";break;
case 2; echo"文件超出了html表单Max_FILE_size选项所指定得值";break;
case 3; echo"文件只被部分上传";break;
case 4; echo"没有上载任何文件";break;
}
die;
}
//判断文件类型
if(!in_array($_FILES["myfile$i"]["type"],array("image/jpeg","image/png","image/gif"))){
echo"文件类型不合法!(只能上传jpg,gif,png格式图片)" ;
continue;
die;
}
$dir = dirname(__FILE__)."/uploaded/";
$filename= $_FILES["myfile$i"]["name"];
if(is_uploaded_file($_FILES["myfile$i"]["tmp_name"])){
if(move_uploaded_file( $_FILES["myfile$i"]["tmp_name"],$dir.$filename)){
echo "文件上传成功br" ;
file_put_contents("./data.txt"," img src='".date("Y-m-d")."/".$filename."'width=200\n",FILE_APPEND);
}else{
echo "文件移动失败" ;
}
}else{
echo "文件不合法(非http post方式上传的文件)" ;
}
}
$link = mysql_connect ("127.0.0.1","root","root") or die("连接数据库失败!");
//选择库
mysql_select_db("123");
//设置编码
mysql_query("set names utf8");
//是否写入到数据库
if(mysql_query("insert into chuan(mysql1,mysql2) values('".$_FILES["myfile$i"]["name"]."','".$filename."')")){
echo "文件上传成功br";
//显示图片
$str= file_get_contents("./data.txt");
$img_arr = explode("\n",$str);
foreach($img_arr as $img){
echo $img."br";
}
?
把来自表单的数据插入数据库
现在,我们创建一个 HTML 表单,这个表单可把新记录插入 "Persons" 表。
这是这个 HTML 表单:
html
body
form action="insert.php" method="post"
Firstname: input type="text" name="firstname" /
Lastname: input type="text" name="lastname" /
Age: input type="text" name="age" /
input type="submit" /
/form
/body
/html
当用户点击上例中 HTML 表单中的提交按钮时,表单数据被发送到 "insert.php"。"insert.php" 文件连接数据库,并通过 $_POST 变量从表单取回值。然后,mysql_query() 函数执行 INSERT INTO 语句,一条新的记录会添加到数据库表中。
下面是 "insert.php" 页面的代码:
?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?
需要PHP基础知识和数据库基础知识。
以SQL为例。使用PHP MySQL 函数可以编辑数据库。
mysql_connect() 函数打开MySQL 连接。举例
?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}// 一些代码...mysql_close($con);
?
mysql_connect()三个参数分别是服务器名,连接账号,连接密码。
连接之后,可以使用mysql_select_db()设置要处理的数据库,后面则是用数据库语句处理数据。SQL语法简介网页链接
可以,这个是将相应的图片已二进制的方式放在数据库中,用的时候再转回来就ok。我之前也做过类似的功能,不过以后没用了,发现用处不大,文件一多就麻烦,还是放在相应的文件夹好
如果不是特别的图片,还是放在文件夹中,再用地址访问比较好