文件以二进制流保存到DB及Download(转)

本文介绍了一种将音频文件上传到数据库的方法,并演示了如何从数据库中读取这些文件进行播放。具体步骤包括使用流将文件转换为字节数组存储,以及从数据库检索字节数组并将其作为音频文件输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把音频文件上传到数据库,然后读取出来播放:
表名: myfile; 表字段: id(int), Content(image),Type(varchar(50))

using   System;
 using   System.Data;
 using   System.Configuration;
 using   System.Collections;
 using   System.Web;
 using   System.Web.Security;
 using   System.Web.UI;
 using   System.Web.UI.WebControls;
 using   System.Web.UI.WebControls.WebParts;
 using   System.Web.UI.HtmlControls;
 using   System.Data.SqlClient;
 using   System.IO;
 
public   partial   class   Image   :   System.Web.UI.Page
 {
         protected   void   Page_Load(object   sender,   EventArgs   e)
         {
         }
         protected   void   Button1_Click(object   sender,   EventArgs   e)
         {
                 Stream   fileDataStream   =   FileUpload1.PostedFile.InputStream;
                 HttpPostedFile   file   =   FileUpload1.PostedFile;
                 int   fileLength   =   FileUpload1.PostedFile.ContentLength;
                 byte[]   fileData   =   new   byte[fileLength];
 
//把文件流填充到数组  
                 fileDataStream.Read(fileData,   0,   fileLength);                 
 
string   fileType   =   Path.GetExtension(FileUpload1.PostedFile.FileName);  //获取文件扩展名
                 SqlConnection   cn   =   new   SqlConnection(); //连接数据库
                 cn.Open();
                 SqlCommand   cmd   =   new   SqlCommand( "insert   myfile(Content,Type)   values(@Content,@Type) ",   cn);
                 cmd.Parameters.AddWithValue( "@Content ",   fileData);
                 cmd.Parameters.AddWithValue( "@Type ",   fileType);
                 cmd.ExecuteNonQuery();
                 cn.Close();
         }
 } 
 
using   System;
 using   System.Data;
 using   System.Configuration;
 using   System.Collections;
 using   System.Web;
 using   System.Web.Security;
 using   System.Web.UI;
 using   System.Web.UI.WebControls;
 using   System.Web.UI.WebControls.WebParts;
 using   System.Web.UI.HtmlControls;
 
using   System.Data.SqlClient;
 using   System.IO;
 
public   partial   class   Image2   :   System.Web.UI.Page
 {
         protected   void   Page_Load(object   sender,   EventArgs   e)
         {
                 SqlConnection   cn   =   new   SqlConnection();//数据库链接
                 cn.Open();
                 SqlDataAdapter   da2   =   new   SqlDataAdapter( "select   *   from   myfile   where   id=   24 ",   cn);//读出数据库中相应的数据
                 DataSet   ds2   =   new   DataSet();
                 da2.Fill(ds2);
                 byte[]   b2   =   (byte[])ds2.Tables[0].Rows[0][ "files "];
                 string   type   =   (string)ds2.Tables[0].Rows[0][ "type "];
                 Response.Clear();
                 string   Type   =   checktype(type);
              Response.AddHeader("Content-Disposition","attachment; filename=”下载”+type);
                 Response.AddHeader( "Content-Length ",   b2.Length.ToString());
                 Response.ContentType   =   Type;
                 Response.BinaryWrite(b2);
                 Response.End();
 
                string   FileName   =   ((LinkButton)sender).CommandArgument;
                 Response.Clear();
                 Response.ContentType   =   Type;
      Response.AddHeader("Content-Disposition","attachment;FileName= "   +   HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8));
                 Response.WriteFile(FileName);
                 Response.End();
         }
 
 
 
//根据文件的扩展名来获取对应的“输出流的HTTP MIME“类型
         private   string   checktype(string   filename)
         {
              string   ContentType;
              switch(filename.Substring(filename.LastIndexOf(". ")).Trim().ToLower())
                 {
                         case   ".asf ":
                                 ContentType   =   "video/x-ms-asf ";
                                 break;
                         case   ".avi ":
                                 ContentType   =   "video/avi ";
                                 break;
                         case   ".doc ":
                                 ContentType   =   "application/msword ";   break;
                         case   ".zip ":
                                 ContentType   =   "application/zip ";   break;
                         case   ".xls ":
                                 ContentType   =  "application/vnd.ms-excel ";   break;
                         case   ".gif ":
                                 ContentType   =   "image/gif ";   break;
                         case   ".jpg ":
                                 ContentType   =   "image/jpeg ";   break;
                         case   "jpeg ":
                                 ContentType   =   "image/jpeg ";   break;
                         case   ".wav ":
                                 ContentType   =   "audio/wav ";   break;
                         case   ".mp3 ":
                                 ContentType   =   "audio/mpeg3 ";   break;
                         case   ".mpg ":
                                 ContentType   =   "video/mpeg ";   break;
                         case   ".mepg ":
                                 ContentType   =   "video/mpeg ";   break;
                         case   ".rtf ":
                                 ContentType   =   "application/rtf ";   break;
                         case   ".html ":
                                 ContentType   =   "text/html ";   break;
                         case   ".htm ":
                                 ContentType   =   "text/html ";   break;
                         case   ".txt ":
                                 ContentType   =   "text/plain ";   break;
                         default:
                                 ContentType   =   "application/octet-stream ";
                                 break;
                 }
                 return   ContentType;
         }
 } 

 

转载于:https://www.cnblogs.com/dennys/p/3587687.html

<think>我们正在处理一个关于Zabbix二进制安装的请求。用户要求提供部署指南或教程。根据提供的引用,我们可以整理出一个步骤指南。引用内容提供了部分信息,但我们需要整合并补充完整步骤。注意:引用中提到了zabbix-server、zabbix-agent的安装,以及修改配置文件、启动服务等。我们将按照以下步骤组织:1.准备工作:下载所需软件包(zabbix、tengine、php等)2.安装zabbix-server和zabbix-agent3.配置zabbix_server(数据库设置等)4.启动服务5.安装和配置zabbix-agent6.更改语言设置(可选)由于引用信息有限,我们只能根据已有信息整理,并适当补充常规步骤(如数据库的安装和初始化,web界面的设置等没有在引用中详细提及,但我们可以提示用户需要完成这些步骤)。注意:二进制安装通常指使用编译好的软件包(如rpm包)进行安装,而并非从源码编译。但引用中提到了下载tar.gz源码包,同时又有yum安装的步骤,这可能存在混淆。根据引用[3]中使用了yum安装zabbix-agent,我们可以推断这里的“二进制安装”可能是指使用官方预编译的rpm包进行安装,或者混合了源码安装(如server)和rpm安装(如agent)。因此,我们需要明确:用户要求是“二进制部署”,通常指使用预编译的二进制文件(比如官方提供的rpm包)进行安装。但有时也可能指从源码编译安装(虽然这通常称为源码安装)。根据引用内容,我们注意到:-引用[1]提供了zabbix-5.0.15.tar.gz(这是源码包)和tengine源码包-引用[3]中安装zabbix-agent使用了yum(这使用的是rpm包)因此,可能用户提供的引用中包含了两种安装方式。为了清晰,我们应当按照一种统一的方式。考虑到zabbix官方推荐使用rpm包安装(二进制安装),我们以rpm包安装方式为主进行说明。但是,由于用户明确要求“二进制部署”,且引用中既包含源码包链接又包含yum安装,我们需要明确:二进制部署通常使用官方提供的预编译包(rpm/deb等)进行安装,而源码安装需要自己编译。因此,我们这里将按照官方推荐的二进制部署方法(使用仓库安装)来提供教程。如果用户提供的引用中确实有部分组件需要源码安装(如tengine),我们则需要单独说明。考虑到用户引用的信息,我们整理步骤如下:步骤1:安装必要的仓库和依赖步骤2:安装zabbix-server,zabbix-agent(通过yum)步骤3:安装数据库(如MySQL或PostgreSQL)并创建数据库和用户步骤4:配置zabbix_server.conf(数据库连接信息)步骤5:导入初始数据库步骤6:安装前端(使用web服务器,如apache或nginx,这里引用提到tengine)步骤7:配置php(引用中提到了一个php的rpm包)步骤8:启动服务但是,由于引用信息并不完整,特别是没有提到数据库的安装和初始化的步骤,也没有提到前端如何配置,因此我们只能根据引用和标准流程来补充。由于引用[3]提到了安装zabbix-agent和更改语言设置,我们可以推断部署包含web前端。这里我们提供一份尽可能完整的指南,缺失的信息我们只能做通用说明。注意:用户引用的内容中的版本(如zabbix-5.0.15,tengine-2.2.3)已经较旧,当前最新版本已经不同,但方法类似。我们按照用户提供的版本来写。根据以上分析,我们给出以下部署步骤:</think> 以下是Zabbix二进制部署的详细教程,整合了官方文档和最佳实践: ### 1. 环境准备 **系统要求**: - CentOS/RHEL 7.x - MySQL 5.7+ 或 PostgreSQL 10+ - PHP 7.2+ - 最小硬件配置:2核CPU/4GB RAM(建议生产环境加倍) **下载地址**(参考引用[^1]): ```bash # Zabbix Server wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.15.tar.gz # Web服务器(推荐Tengine) wget https://tengine.taobao.org/download/tengine-2.2.3.tar.gz # PHP仓库(阿里云镜像) rpm -Uvh https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm ``` ### 2. 数据库初始化 ```sql CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'YourPassword'; GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; FLUSH PRIVILEGES; ``` ### 3. 服务端安装 ```bash tar -zxvf zabbix-5.0.15.tar.gz cd zabbix-5.0.15/ # 安装依赖 yum install -y net-snmp-devel libevent-devel pcre-devel openssl-devel # 编译安装 ./configure --enable-server --with-mysql --with-net-snmp --enable-ipv6 make install ``` ### 4. 配置文件修改(关键步骤) **修改`zabbix_server.conf`**(参考引用[^2]): ```ini DBName=zabbix DBUser=zabbix DBPassword=YourPassword ListenPort=10051 LogFile=/var/log/zabbix/zabbix_server.log PidFile=/var/run/zabbix_server.pid ``` ### 5. Web前端部署 ```bash # 安装PHP依赖 yum -y install php72-php-fpm php72-php-mysqlnd php72-php-gd # 部署Zabbix前端 cp -r ui/* /usr/share/nginx/html/zabbix/ chown -R nginx:nginx /usr/share/nginx/html/zabbix ``` ### 6. Agent安装(参考引用[^3]) ```bash yum -y install zabbix-agent systemctl enable --now zabbix-agent ``` ### 7. 启动服务 ```bash # 创建服务文件 cp misc/init.d/fedora/core/zabbix_server /etc/init.d/ systemctl daemon-reload # 启动服务 systemctl start zabbix-server systemctl start nginx ``` ### 8. 界面初始化 访问 `http://server_ip/zabbix`,完成: 1. 检测环境依赖 2. 配置数据库连接 3. 设置管理员账号 **语言切换**(参考引用[^3]): 登录后通过右上角用户图标 → Profile → Language 修改 > **部署验证**: > ```bash > telnet localhost 10051 # 检测server端口 > zabbix_get -s 127.0.0.1 -k agent.ping # 测试agent > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值