打印

[php] 请教版主:关于本论坛上传附件的方法

本论坛上传附件的方法:
1.数据库咱设计
2.附件写入数据库(包括附件名、附件个数、附件的实际路径)
3.读出文章时插入附件的字符串咱作处理?
只有累才证明自己活着!
附件已经很多年没有写入数据库了。写入数据库的方法早已淘汰。

上传方面可以看看手册中关于文件上传那一块。比ASP上传简单多了。学PHP的幸福啊。
乐于助人、严格管理、言多必失。无知者无罪。Keep your waiting,I am come back.
编程资源:http://book.kuhanzhu.com
对管理有异议,请前往事物区进行投诉。请勿PM。
楼主可能表达的有问题 他的意思应该不是把上传后的文件内容写入库 而是说“包括附件名、附件个数、附件的实际路径”
既然有“附件的实际路径” 感觉应该说得是附件还保存在服务器的某个路径里 而用数据库仅仅来记录其位置
能看出楼主似乎是要做类似文章中插入附件的效果 设计库的时候可以让附件表和文章表关联 还有一种方法就是通过文章表的主键 通过hash算法做出 一个唯一的目录给一条文章记录 当然这有违楼主的意愿 但是在单篇文章显示的时候其效率比较高
至于“插入附件的字符串” 是不是说在文章中添加附件的下载链接? 如果是的话 做法有很多 看楼主的具体需求了 最直接的方法就是直接连接到附件的地址 如果要防止盗链、记录下载次数的就要单做一个脚本(或修改服务器设置)来下载了 如果按文件类型显示图片或flash之类 就要在替换文章内容的时候多作些判断了
新手
谢谢楼上的仁兄讲解;
有实际的例子可以学习下吗?
只有累才证明自己活着!

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
谢谢楼上的仁兄讲解;
有实际的例子可以学习下吗?
只有累才证明自己活着!

TOP

有两个附件或更多时咱取附件的文件名和路径?
只有累才证明自己活着!

TOP

网上很多PHP上传类的
我也学PHP不久,自己胡乱写的类,功能是实现了,觉得还是不好.
HTML
引用:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<SCRIPT type=text/javascript>
var num=2;
function addElement(){
var targetaddElement=document.getElementById("aa");
var fileElement=document.createElement("input");
fileElement.type="file";
fileElement.name="fileup"+num;
num++;
targetaddElement.appendChild(fileElement);
}
</SCRIPT>

<FORM action=file_up.php method=post encType=multipart/form-data>
<META content="MSHTML 6.00.2900.3314" name=GENERATOR></HEAD>
<BODY>
<DIV>
<DIV id=aa><INPUT type="file" name="fileup1"> </DIV>
<INPUT id="add" onclick="addElement()" type="button" value="添加">
<INPUT type="hidden" value="1024000" name="MAX_FILE_ZIRE">
<INPUT type="submit" value="上传图片">
</FORM></DIV></BODY></HTML>
PHP
引用:
include "include/fileup.inc.php";
include "include/constant.inc.php";
$path="imges/ad/";
echo $num=count($_FILES);
if($num>1){
  for($i=1;$i<=$num;$i++){
    $filename[]="fileup".$i;
  }
}else{
  $filename="fileup1";
}
//print_r($filename);
//exit;
$kk=new fileup($filename,$path);
//echo "<a href={$kk->Name} target=_blank>{$kk->Name}</a>";
echo "<a href=file_up.html>返回</a>";
文件上传类
引用:
class fileup{
  private $Path;        //保存路径
  public  $Name;        //移动后文件绝对路径
  public  $width;       //图片宽
  public  $height;      //图片高
  private $FileMaxsize; //文件最大上传限制
  private $Ext;         //文件扩展名
  private $FileName;    //表单传过来的表单名
  private $FileFormat;  //文件上传格式限定

/**
*FileName取得传过来的文件名
*Path设置保存路径
*Fileformat设置文件上传格式
*/
  function __Construct($FileName,$path,$FileFormat=array('gif','jpg','png'),$FileMaxsize = 1024000){
       $this->Path = $path;
    $this->FileFormat = $FileFormat;
       $this->FileMaxsize = $FileMaxsize;
       if(is_array($FileName)){
        for($i = 0;$i < count( $FileName ); $i++){
               $this->FileName = $FileName[$i];
               $this->CheckUp();
               }
       }else{
        $this->FileName = $FileName;
        $this->CheckUp();
       }
   }

//------检查文件是否上传---------------//  
  function CheckUp(){
    if($_FILES[$this->FileName]['tmp_name'] == "") {
              exit("空文件");
              }else{
                $this->CheckSize();
                }
  }

//------检查文件大小是否超出-------//
  function CheckSize(){
    if($_FILES[$this->FileName]['size']>$this->FileMaxsize){
         exit("文件过大");
       }else{
         $this->GetExt();
       }
  
  }

//--------获得文件扩展名----------//
  function GetExt(){
    $type=$_FILES[ $this->FileName ][ 'type' ];
    if($type == "image/jpeg" || $type == "image/pjpeg"){
         $this->Ext="jpg";
       }
       if($type == "image/gif"){
         $this->Ext="gif";
       }
       if($type == "image/x-png" || $type == "image/png"){
         $this->Ext="png";
       }
       //-----待加-------//
       $this->CheckFormat();
  }

//--------检查文件是否符合上传格式-----------//

  function CheckFormat(){
       $typearray = array();
    foreach($this->FileFormat as $value){
         $typearray[] = strtolower($value);
       }
    if(!in_array($this->Ext,$typearray)){
        exit("上传文件类型错误");
       }
       $this->FileMove();
  }
  
//------------移动文件到制定目录下--------------//
  function FileMove(){
    $dir = $this->Path.time().".".$this->Ext;
       for($i = 2; is_file($dir) ; $i++){
       $dir=$this->Path.time()."-".$i.".".$this->Ext;
              }
    if (move_uploaded_file($_FILES[$this->FileName]['tmp_name'],$dir)) {
    echo "上传成功<br>";
       $this->Name = HOST.$dir;
       //$size = getimagesize($this->Name);
       //$this->width=$size[0];
    //$this->height=$size[1];
       $this->ShowImg();
       } else {
    exit("上传失败");
       }
  }

//-------------显示图片-----------------------//
  function ShowImg(){
    echo "<a href=$this->Name target=_blank>$this->Name</a><br>";
  }

//------------文件错误信息-------------------//
  function ErrorMsg(){
    if($_FILES[$this->FileName]['error'] == "1"){
         exit( "上传文件超过PHP配置要求");
       }
    if($_FILES[$this->FileName]['error'] == "2"){
         exit( "上传文件超过规定大小");
       }
    if($_FILES[$this->FileName]['error'] == "3"){
         exit( "上传文件异常中断");
       }
    if($_FILES[$this->FileName]['error'] == "4"){
         exit( "文件太TM大了");
       }
  }

TOP

可以看下文件上传那一块,看下$_FILES数组介绍。简单的例子:
<?php
$accepted = array('png', 'jpg', 'jpeg', 'gif', 'bmp' ,'exe','rar','txt');//格式
if(isset($_GET['action']))
{echo $_POST['words'];
$filename=md5_file($_FILES['haha']['tmp_name']).strrchr($_FILES['haha']['name'], '.');
echo $filename."<br/>";
echo $_FILES['haha']['tmp_name']."<br/>";
echo $_FILES['haha']['name']."<br/>";
echo $_FILES['haha']['type']."<br/>";
echo $_FILES['haha']['size']."<br/>";
if(in_array(strtolower(fileext($_FILES['haha']['name'])), $accepted))
    {
move_uploaded_file($_FILES['haha']['tmp_name'],"pic/".$filename);
    }
}
function fileext($filename) {
    return substr(strrchr($filename, '.'), 1);
    //(strtolower(substr($_FILES['haha']['name'],(strrpos($_FILES['haha']['name'],'.')+1))))//字母小写
}
?>
<form action="?action=upload" enctype="multipart/form-data" method="post" name="a">
    <input type="file" name="haha"/>
    <input type="text" name="words"/>
    <input type="submit" name="submit" value="提交"/>
</form>

原文:http://bbs.blueidea.com/thread-2865123-1-1.html

先掌握基础,才能看懂类似7楼的代码。
乐于助人、严格管理、言多必失。无知者无罪。Keep your waiting,I am come back.
编程资源:http://book.kuhanzhu.com
对管理有异议,请前往事物区进行投诉。请勿PM。

TOP

谢谢各位,感动学习中....
只有累才证明自己活着!

TOP

java的上传好像也很简单吧?ASP的比较痛苦...

TOP