`
hudeyong926
  • 浏览: 2018793 次
  • 来自: 武汉
社区版块
存档分类
最新评论

多文件上传设计

 
阅读更多

一将文件存到项目路径下,数据库保存图片的路径

多文件上传思路是,上传一个文件服务器上同时入库表,然后会callback返回文件信息,js将文件ID插入input fileId,提交整个表单的时候,做sqlupdate将文件的from_id,from_table关联上

设计优点:根据from_id,from_table可以很方便的判断服务器上的文件哪些是无用的临时文件,哪些是用户的有用文件,可以定期做文件清理操作

CREATE TABLE `dfj_attachment` (
  `file_id` int(11) NOT NULL AUTO_INCREMENT,
  `from_table` varchar(40) NOT NULL DEFAULT '' COMMENT '分类',
  `from_id` int(11) NOT NULL DEFAULT '0' COMMENT '分类ID',
  `input_name` varchar(40) NOT NULL DEFAULT '' COMMENT '表单input',
  `file_name` varchar(90) NOT NULL DEFAULT '' COMMENT '文件原名',
  `file_size` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '文件大小',
  `downloads` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '下载次数',
  `save_path` varchar(200) NOT NULL DEFAULT '' COMMENT '上传的文件',
  `thumb_path` varchar(200) DEFAULT NULL COMMENT '缩略图',
  `is_image` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否是图片 1是 0否',
  `user_id` int(11) DEFAULT '0' COMMENT '用户ID',
  `user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
  `upload_ip` char(15) DEFAULT NULL COMMENT '上传的IP',
  `creatd_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `listorder` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '排序',
  `status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '状态',
  PRIMARY KEY (`file_id`),
  KEY `tab_name` (`from_table`,`from_id`,`input_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COMMENT='上传附件';
uploadify 上传不成功时的调试
$(function() {
    $("#file_upload").uploadify({
        'swf'             : '/uploadify/uploadify.swf',
        'uploader'        : '/uploadify/uploadify.php',
        'onUploadSuccess' : function(file, data, response) {
            alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
        }
    });
});
二.把图片数据直接保存在你的MySQL数据库,根据二进制的数据生成对应的图片
首先,你必须在你的MySQL中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,你必须做下列步骤:
CREATE TABLE `binary_data` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `description` char(50) DEFAULT NULL,
  `bin_data` longblob,
  `filename` char(50) DEFAULT NULL,
  `filesize` char(50) DEFAULT NULL,
  `filetype` char(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf-8;
保存图片
#$file_data = file_get_contents($_FILES["myfile"]['tmp_name']);
INSERT INTO receive(file_data,file_type,file_name,file_size)VALUES('$file_data','$file_type','$file_name',$file_size);
PHP自动将图片转换成BASE64 base64转换成图片
<?php
function base64_encode_image ($filename='string',$filetype='string') {
    if ($filename) {
        $imgbinary = fread(fopen($filename, "r"), filesize($filename));
		//file_put_contents('b.png',$imgbinary);
        return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
    }
}
?>
<img src="<?php echo base64_encode_image ('a.png','png'); ?>"/>

 asdfas

public function getFileList($from_table, $from_id, $input_name = '') {
    $where = ['from_table' => $from_table, 'from_id' => $from_id];
    if ($input_name) {
        $where['input_name'] = $input_name;
    }
    $list = $this->where($where)->order('listorder asc')->select();
    if (empty($input_name)) {
        $list = Arr::group($list, 'input_name');
    }
    return $list;
}

public function removeFile($from_table, $from_id, $input_name = '') {
    $where = ['from_table' => $from_table, 'from_id' => $from_id];
    if ($input_name) {
        $where['input_name'] = $input_name;
    }
    $this->where($where)->delete();
}

public function getTablesFileList($from_table, $ids, $input_name = '') {
    $where = ['from_table' => $from_table, 'from_id' => ['IN', $ids]];
    if ($input_name) {
        $where['input_name'] = $input_name;
    }
    $list = $this->where($where)->order('listorder asc')->select();
    $list = Arr::group($list, 'from_id', 'input_name');
    return $list;
}

 


  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 大小: 8.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics