求助各位大佬,上传图片只在本地做过,服务器上完全搞不懂

解决方案 »

  1.   

    最简单的就是 form 表单上传。<form action="doAction1.php" method="post" enctype="multipart/form-data">
    请选择您要上传的文件:<input type="file" name='myFile' />
    <input type="submit" value="上传文件" />
    </form>请求界面
    doAcion1.php
    header('content-type:text/html;charset=utf-8');
    $fileInfo=$_FILES['myFile'];
    $maxSize=2097152;//允许的最大值
    $allowExt=array('jpeg','jpg','png','gif','wbmp');
    $flag=true;//检测是否为真实图片类型
    //1.判断错误号
    if($fileInfo['error']==0){
    //判断上传文件的大小
    if($fileInfo['size']>$maxSize){
    exit('上传文件过大');
    }
    //$ext=strtolower(end(explode('.',$fileInfo['name'])));
    $ext=pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
    if(!in_array($ext,$allowExt)){
    exit('非法文件类型');
    }
    //判断文件是否是通过HTTP POST方式上传来的
    if(!is_uploaded_file($fileInfo['tmp_name'])){
    exit('文件不是通过HTTP POST方式上传来的');
    }
    //检测是否为真实的图片类型
    if($flag){
    if(!getimagesize($fileInfo['tmp_name'])){
    exit('不是真正图片类型');
    }
    }
    $path='uploads';
    if(!file_exists($path)){
    mkdir($path,0777,true);
    chmod($path,0777);
    }
    //确保文件名唯一,防止重名产生覆盖
    $uniName=md5(uniqid(microtime(true),true)).'.'.$ext;
    //echo $uniName;exit;
    $destination=$path.'/'.$uniName;
    if(@move_uploaded_file($fileInfo['tmp_name'],$destination)){
    echo '文件上传成功';
    }else{
    echo '文件上传失败';
    }
    }else{
    //匹配错误信息
    switch($fileInfo['error']){
    case 1:
    echo '上传文件超过了PHP配置文件中upload_max_filesize选项的值';
    break;
    case 2:
    echo '超过了表单MAX_FILE_SIZE限制的大小';
    break;
    case 3:
    echo '文件部分被上传';
    break;
    case 4:
    echo '没有选择上传文件';
    break;
    case 6:
    echo '没有找到临时目录';
    break;
    case 7:
    case 8:
    echo '系统错误';
    break;
    }
    }
      

  2.   

    你这个问题话,主要是路径的问题搞不懂吧,一般$path='uploads';uploads前面没有加/的话,文件是保存在你项目入口文件平行的那级的uploads目录,如果前面加/的话一般是保存在linux根目录下,/uploads这个目录里面的,保存路径的时候保存相对路径即可,这样的话附件的位置可以方便的挪动了!