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

多文件上传设计

 
阅读更多

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

多文件上传思路是,上传一个文件服务器上同时入库表,然后会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
分享到:
评论

相关推荐

    Java多线程设计模式上传文件

    Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...

    java多文件上传实现

    在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...

    多文件批量上传界面漂亮

    这个"多文件批量上传界面漂亮"的项目,显然关注的是提供一个美观且高效的文件上传体验。以下将详细介绍相关知识点: 1. **多文件上传**:传统的HTML表单仅支持单个文件的上传,但通过HTML5的`...

    多文件上传和展示

    【标题】:多文件上传和展示 在网页开发中,多文件上传功能是常见的需求,尤其是在数据管理和资源共享的场景下。Bootstrap-fileinput 是一个流行的、功能丰富的jQuery插件,专门用于实现美观且实用的文件上传功能,...

    JSP多文件上传(同时上传)

    在Web开发中,JSP(JavaServer Pages)...总的来说,JSP多文件上传涉及前后端的协作,包括HTML表单设计、JSP与Servlet交互、文件解析、存储、错误处理和安全性等多个方面。正确实现这一功能需要对Web开发有深入的理解。

    大文件上传,和多文件上传

    在IT领域,大文件上传和多文件上传是两个常见的需求,尤其在云存储、文件分享、协同工作等场景中显得尤为重要。以下是对这两个知识点的详细解释: 大文件上传: 大文件上传是指允许用户上传超过一般浏览器或服务器...

    uniapp 多文件上传

    在uniapp框架中,多文件上传是一个常见的功能需求,尤其在构建移动应用或者Web应用时。uniapp基于Vue.js,提供了丰富的API接口,使得开发者能够方便地实现这一功能。本篇将详细介绍如何在uniapp中进行多文件上传,并...

    C#多服务器多文件上传实例

    在C#编程环境中,实现多服务器多文件上传的实例是一个涉及网络编程、并发处理和分布式系统设计的重要技术问题。在大型应用或者云服务环境中,为了提高系统的可用性和可靠性,通常会采用多服务器集群架构。本实例就是...

    基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传

    基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传 项目经过严格测试,确保可以运行! 采用前后端分离的方式进行开发,实现了几种常用的文件上传功能...

    大文件以及多文件上传

    提供的"文件上传效果图.png"展示了用户界面的设计,包括文件选择、进度条显示和上传状态反馈等元素。这种可视化反馈有助于提升用户体验,让用户了解上传的进度和状态。 6. **工程文件**: "FileUpload.sln"是...

    Ext3.0实现多文件上传.rar

    综上所述,“Ext3.0实现多文件上传.rar”这个压缩包中的代码示例可能涵盖了以上技术点,提供了一个完整的多文件上传解决方案,包括前端的交互设计和后台的文件处理逻辑。通过学习和理解这个示例,开发者可以更好地...

    Vuejs文件上传组件多文件上传

    `vue-upload-component`是一个专门为Vue.js设计的文件上传组件,它提供了以上所有功能。以下是该组件的一些主要特性: - 支持多文件选择和拖放上传,提供良好的用户体验。 - 可以设置`put`或`post`请求方法,根据...

    MVC 多文件上传

    在本文中,我们将深入探讨如何使用MVC(Model-View-Controller)模式来实现一个支持多文件上传的程序。MVC是一种广泛应用于Web开发的设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器...

    多文件上传,并显示每一个的进度

    本文将深入探讨如何实现"多文件上传,并显示每一个的进度"这一功能,涉及前端技术和后端处理。 首先,前端部分。这里提到的前端框架有easyUI、AmazeUI以及JavaScript。EasyUI是一个基于jQuery的UI库,提供了丰富的...

    Ext多文件上传

    10. **用户体验**:设计良好的多文件上传界面应该简洁易用,提供清晰的指示和反馈,让用户知道何时可以开始上传,上传状态如何,以及如何取消或重试上传。 综上所述,"Ext多文件上传"涉及到了前端开发的多个方面,...

    Netty5多文件、大文件上传源码

    在Netty中实现多文件上传,需要设计一个自定义的编解码器(Encoder和Decoder),来处理HTTP请求或自定义的二进制协议,以包装每个文件数据。每个文件会被分割成多个数据块,然后逐个发送。服务端接收这些数据块,...

    js多文件上传

    JavaScript实现的多文件上传是一种常见的前端技术,它允许用户一次性选择并上传多个文件,提高了用户在网站上的交互体验。在本项目中,开发者利用JavaScript的File API和其他相关技术创建了一个功能强大且样式美观的...

    jsp多文件上传

    本示例主要关注"jsp多文件上传",结合了jQuery和plupload库来实现这一功能。以下是对这些知识点的详细解释: 1. **JSP(JavaServer Pages)**:JSP是Java的一种动态网页技术,它允许开发人员在HTML代码中嵌入Java...

Global site tag (gtag.js) - Google Analytics