PHP 上传/下载存储在数据库中的imge类型数据(图片)

12人阅读 评论(0) 收藏 举报
分类:
//上传扫描件(图片以img数据类型存入数据中)
function mod_addPhoto()
{
    global $row_User;
    global $mssql_connection;
    if ($_FILES['myfile']['error'] > 0) {
        $back = array(
            'message' => 'error',
            'date' => '文件错误'
        );
        echo json_encode($back);
        exit();
    } else {
        //判断是否选择了要上传的表格
        if (empty($_POST['upfile'])) {
            $back = array(
                'message' => 'error',
                'date' => '上传文件不能为空'
            );
            echo json_encode($back);
            exit();
        }

        //获取表格的大小,限制上传表格的大小5M
        $file_size = $_FILES['myfile']['size'];
        if ($file_size > 100 * 1024 * 1024) {
            $back = array(
                'message' => 'error',
                'date' => '文件大小不能超过5M'
            );
            echo json_encode($back);
            exit();
        }
        //获取文件参数
        $imgfile = $_FILES['myfile'];
        $name = $imgfile['name'];  //取得图片名称
        $type = $imgfile['type']; //取得图片类型
        $size = $imgfile['size'];  //取得图片长度
        $tmpfile = $imgfile['tmp_name'];  //图片上传上来到临时文件的路径
        $file = fopen($tmpfile, 'rb');
        $content = fread($file, $size);
        $content = "0x" . bin2hex($content);
        fclose($file);

        //限制上传表格类型
        $file_type = $_FILES['myfile']['type'];
        $file_type=substr($file_type, 6);
        //获取当前时间
        date_default_timezone_set('PRC');
        $now_time = date('Y-m-d H:i:s', time());
        //保存到数据库
        $OAV_ID = $_GET['OAV_ID'];
        $OVA_ID = create_ID("OA_VehicleAttach");

        global $mssql_connection;
        if (!$mssql_connection) {
            $mssql_connection = open_mssqlconn();
        }
        $sfu_id = $row_User['SFU_ID'];
        $sql1 = "INSERT INTO OA_VehicleAttach (OAV_ID, OVA_ID, OVA_Name, OVA_Date, OVA_Type, OVA_Size, OVA_Data, OVA_User) VALUES ('$OAV_ID', '$OVA_ID', '$name','$now_time','$file_type',$file_size, $content,'$sfu_id' )";
        $sql = iconv("utf-8", "gbk", $sql1);   //PHP使用UTF-8编码。SQL Server 2008使用默认的GBK编码  在执行查询语句之前将查询语句及所要插入的数据转化为GBK编码。
        $cursor = sqlsrv_query($mssql_connection, $sql);
        $aa = sqlsrv_rows_affected($cursor);
        if ($aa) {
            $back = array(
                'message' => 'success',
                'date' => '文件上传成功'
            );
            echo json_encode($back);
            exit();
        } else {
            $back = array(
                'message' => 'fail',
                'date' => '文件上传失败'
            );
            echo json_encode($back);
            exit();
        }
    }
}




//下载扫描件
function  mod_down_scanning_copy(){
    $id = $_GET['OVA_ID'];
    //$id = getGP('OAV_ID', 'G');
    $sql = "SELECT OVA_ID,OAV_ID,OVA_Name,OVA_Data,OVA_User,OVA_Size FROM OA_VehicleAttach where OVA_ID='" . $id . "'";
    $cursor = mssqlquery($sql);
    $row = sqlsrv_fetch_array($cursor, SQLSRV_FETCH_ASSOC);

    if(isset($row['OVA_Name'])){
        $filename=$row['OVA_Name'];
        $filedata=$row['OVA_Data'];
        $filesize=$row['OVA_Size'];
    }

   // $binaryStr = base64_decode($filedata);
 //   file_put_contents($filename, $binaryStr);

    $filePath = 'download/' . $filename;
    $file = fopen($filePath, "w");//打开文件准备写入
    fwrite($file, $filedata);//写入
    fclose($file);//关闭

//    header("content-disposition:attachment;filename=".$filename);
//    header("content-length:".$filesize);
//    readfile($filedata);
    if(file_exists($filePath)){
        header("Content-type:application/octet-stream");
        header("Content-Disposition:attachment;filename = ".$filename);
        header("Accept-ranges:bytes");
        header("Content-length:".$filesize);
        readfile($filePath);
    }

}

//SQL查询
function mssqlquery($Q)
{
    global $mssql_connection;
    if (!$mssql_connection) {
        $mssql_connection = open_mssqlconn();
    }
    $Q = iconv("utf-8", "gbk", $Q);
    $cursor = sqlsrv_query($mssql_connection, $Q);

    if (!$cursor) {
        echo "SQL查询出错.\n";
        die(print_r(sqlsrv_errors(), true));
    }
    return $cursor;
}
//获取数据库连接

$mssql_connection = '';
function open_mssqlconn()
{
    global $mssql_connection;
//    global $MSSQL_SERVER;

//    global $connectionInfo;
    $MSSQL_SERVER = "DESKTOP-CA04H1Q\SQLEXPRESS";

    $connectionInfo = array("Database" => "ToncentHuaJie", "UID" => "用户名", "PWD" => "密码");

    if (!$mssql_connection) {
        $mssql_link = sqlsrv_connect($MSSQL_SERVER, $connectionInfo);
//            sqlsrv_query("set NAMES GBK");
        if (!$mssql_link) {
            echo "Could not connect.\n";
            die(print_r(sqlsrv_errors(), true));
        }
        return $mssql_link;
    } else {
        return $mssql_connection;
    }
}

查看评论

怎么把上传的图片路径动态的存储在数据库中啊

controller代码如上,ssm框架。
  • qq_39984836
  • qq_39984836
  • 2017-09-26 15:08:37
  • 578

数据库的存储系列———将图片存储到数据库

数据库的存储—系列———将图片存储到数据库在很多时候我们都使用数据库才存储我们的数据,然而我们通常在数据库里面存放的数据大多都支持数或者是一些字符,那么如果我们想在数据库里面存放图片,那么应该要怎么做...
  • qq_32763643
  • qq_32763643
  • 2017-04-22 15:57:53
  • 2726

上传下载保存到数据库的image字段中的文件

Asp.Net在SqlServer中的图片存取技术       在使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来           一,上传并存入S...
  • shanliwa
  • shanliwa
  • 2007-09-26 09:51:00
  • 660

VFP将图片或其他文件保存到SQL Server的Text类型字段或者Access的备注字段中,并可以还原或显示。

*-- vfp8.0、9.0 *--保存 1、将图片文件用 Filetostr()转成字符A。 2、再用 Strconv("字符A",13)将字符A转成base64编码数据的字符B。 3、将字...
  • apple_8180
  • apple_8180
  • 2008-04-25 16:10:00
  • 14434

在数据库中保存和读取图片

using System.IO数据库结构(Imagelist(image))添加OpenFileDialog1控件将图片存入数据库。     private void button1_Click(ob...
  • kafanqd
  • kafanqd
  • 2009-11-15 15:14:00
  • 7037

java存取图片到数据库

  • 2010年08月05日 10:01
  • 10KB
  • 下载

将上传的文件描述保存到数据库中,并显示到页面

思想:   创建一个数据库:   mysql> use imgs; Database changed mysql> create table img(idvarchar(32),old...
  • xiaobiaobiao521
  • xiaobiaobiao521
  • 2013-05-15 19:27:27
  • 995

Android——Tomcat版本更新下载+头像照片上传到Tomcat

Android——Tomcat版本更新下载+头像照片上传到Tomcat package com.example.schoolappzyf; import android.app.Notif...
  • zhangyufeng0126
  • zhangyufeng0126
  • 2016-09-05 20:22:06
  • 767

软件开发者面试百问-----怎样在数据库中存储N维向量?

这个题目不知道怎么回答才好,也不知道跟数据结构有什么关系,难道就是说的二维数组?N维向量说的简单点就是N个有序数组,就是我们常见的二维数组。设计一个表,结构如下:vectorvectorNo  Dat...
  • fantian830211
  • fantian830211
  • 2009-04-05 21:10:00
  • 2147

金额如果存在数据库中应该使用何种类型?

一般用money或decimal或numeric,而不用float或double,因为容易出现”失真”. money货币数据存储的精确度为四位小数。可以存储在 money 数据类型中的值的范围是 -...
  • gengfu_php
  • gengfu_php
  • 2017-09-02 21:44:41
  • 654
    个人资料
    持之以恒
    等级:
    访问量: 7712
    积分: 334
    排名: 23万+