当前位置:首页 » 操作系统 » 将文件保存到数据库

将文件保存到数据库

发布时间: 2022-09-02 11:49:27

‘壹’ 想把文件存入数据库怎么办

数据库是不会存储文件的,他只是存储文件的存放地址,比如你想存储一个文件,你可以把文件名,文件大小,文件格式,文件存储的地址(d:/file/fiel.txt)存到数据库表中。
当你想获取文件的时候就直接读取文件的存储地址File file=new File("d:/file/fiel.txt");,这样就能存储数据文件了

‘贰’ 怎样把文本文档里存储的数据存到数据库

将带有格式的文本保存到数据库中的方法/步骤:
1、在jsp中,页面的带有格式的文本内容外面用一个大的标签,给定表签名。
2、页面做提交的时候用上面的表签名点innerHTML的方式来获取页面带有标签和样式的内容。
3、将上面取得的内容作为一个字符串保存到数据库即可,下次把数据库里的内容直接输出到页面就可以了。
对于要输出到word里保存样式的方法也是类似的,只是需要去看一下word解析文本的方式与jsp有何区别,在输出到word的时候做一下变换即可。

‘叁’ 用xp.cn把文件放进数据库怎么弄

有2种方式:一种是将文件名称保存到数据库中,文件保存到服务器指定位置;另一种就是将文件直接保存到数据库中。
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。

‘肆’ 如何把文件存放在mysql数据库中

在my.ini文件里可以设定数据文件的存放路径将其从原来的目录移动到指定的位置;修改配置文件my.ini,也就是把socket和data的目录改到你移到的位置

‘伍’ 如何将Word文档存入数据库中

可以通过流将word转化为二进制数据,然后存入,选择使用一种动态语言即可轻松完成.
但是,由于此类文件较大,数据读取和写入都将非常缓慢,所以不提倡这样.
建议使用图片和文档的路径保存在数据库中.

‘陆’ 请教如何将文件存储到数据库中

将文件保存到数据库中,实际上是将文件转换成二进制流后,将二进制流保存到数据库相应的字段中。在SQL Server中该字段的数据类型是Image,在Access中该字段的数据类型是OLE对象。 //保存文件到SQL Server数据库中 FileInfo fi=new FileInfo(fileName); FileStream fs=fi.OpenRead(); byte[] bytes=new byte[fs.Length]; fs.Read(bytes,0,Convert.ToInt32(fs.Length)); SqlCommand cm=new SqlCommand(); cm.Connection=cn; cm.CommandType=CommandType.Text; if(cn.State==0) cn.Open(); cm.CommandText="insert into "+tableName+"("+fieldName+") values(@file)"; SqlParameter spFile=new SqlParameter("@file",SqlDbType.Image); spFile.Value=bytes; cm.Parameters.Add(spFile); cm.ExecuteNonQuery() //保存文件到Access数据库中 FileInfo fi=new FileInfo(fileName); FileStream fs=fi.OpenRead(); byte[] bytes=new byte[fs.Length]; fs.Read(bytes,0,Convert.ToInt32(fs.Length)); OleDbCommand cm=new OleDbCommand();

‘柒’ 我想把一个word文档存到数据库里面,应该怎样做

最笨的办法:将word文件算作二进制文件,经由过程攫取二进制文件的方法写入文件流,再将文件流数据写入数据库的二进制字段中,反之,将数据库中数据读出再写入二进制文件。

‘捌’ 如何将大文件写入到数据库中

最近利用空闲时间自己在写一个文件备份工具,因为我磁盘上的很多文件很重要,例如很多PPT和讲义。所以需要经常备份,而且因为这些文件很多,所以需要增量备份。
我尝试用过windows自带的ntbackup工具,但感觉不是很爽。它不支持压缩备份,而且界面也有点复杂。
为了响应伟大领袖的“自力更生,丰衣足食”的号召,咱决定自己写一个工具,专门备份到数据库。支持压缩,支持加密,支持增量。
本文分享一下其中一些重点的技术细节
其中一个关键的技术就是将文件使用二进制的方式存放在数据库的varbinary(max)的字段中。该字段最大允许的长度为2GB。
对于一些小文件,我们可以一次性读取它的所有字节,然后一次提交到数据库
///
<summary>
///
这个方法演示了如何一次提交所有的字节。这样导致的结果是:应用程序立即需要申请等同于文件大小的内存
///
</summary>
static
void
SubmitFileByOnce()
{
string
file
=
@"F:功夫熊猫.rmvb";//文件大小为519MB
byte[]
buffer
=
File.ReadAllBytes(file);
using
(SqlConnection
conn
=
new
SqlConnection("server=(local);database=demo;integrated
security=true"))
{
using
(SqlCommand
cmd
=
conn.CreateCommand())
{
cmd.CommandText
=
"INSERT
INTO
Files(FileName,FileContents)
VALUES(@fileName,@fileContents)";
cmd.Parameters.AddRange(
new[]
{
new
SqlParameter("@fileName",file),
new
SqlParameter("@fileContents",buffer)
});
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
但是,上面的方法有几个问题,主要体现在如果文件比较大的话
1.
它需要一次性很大的内存,具体数据等同于文件大小。因为File.ReadAllBytes方法是将所有字节全部读入到内存。
2.
它会导致提交失败,就是因为数据太大了。数据库也会拒绝。
那么,我就对这个方法做了一下改进,将文件拆分为5MB一段,也就是说,此时每次申请的内存只有5MB。这就大大地提高了可用性。
///
<summary>
///
这个方法是将文件切分为5MB的块,每次只是提交5MB,所以可能多次提交,但内存占用就比较小
///
</summary>
static
void
SubmitFileStepByStep()
{
string
file
=
@"F:功夫熊猫.rmvb";//以这个文件为例,大小为519MB,一共需要的时间大约94秒。还是有点慢的,所以还可能需要进行压缩
FileStream
fs
=
new
FileStream(file,
FileMode.Open);
byte[]
buffer
=
new
byte[5
*
1024
*
1024];
int
readCount;
using
(SqlConnection
conn
=
new
SqlConnection("server=(local);database=demo;integrated
security=true"))
{
conn.Open();
while
((readCount
=
fs.Read(buffer,
0,
buffer.Length))
>
0)
{
using
(SqlCommand
cmd
=
conn.CreateCommand())
{
cmd.CommandText
=
"INSERT
INTO
Files(FileName,FileContents)
VALUES(@fileName,@fileContents)";
cmd.Parameters.AddRange(
new[]
{
new
SqlParameter("@fileName",file),
new
SqlParameter("@fileContents",buffer)
});
cmd.ExecuteNonQuery();
}
}
conn.Close();
}
}
这样的话,有一个后果就是一个文件,可能在数据库中会有多条记录。所以在读取的时候,我们需要对其进行合并
static
void
DownloadFile()
{
string
file
=
@"F:功夫熊猫.rmvb";
string
destfile
=
@"E:TempTemp.wmv";
using
(SqlConnection
conn
=
new
SqlConnection("server=(local);database=demo;integrated
security=true"))
{
using
(SqlCommand
cmd
=
conn.CreateCommand())
{
cmd.CommandText
=
"SELECT
FileContents
FROM
Files
WHERE
FileName=@fileName";
cmd.Parameters.AddRange(
new[]
{
new
SqlParameter("@fileName",file),
});
conn.Open();
SqlDataReader
reader
=
cmd.ExecuteReader();
FileStream
fs
=
new
FileStream(destfile,
FileMode.Append,
FileAccess.Write);
while
(reader.Read())
{
byte[]
buffer
=
(byte[])reader[0];
fs.Write(buffer,
0,
buffer.Length);
}
fs.Close();
reader.Close();
conn.Close();
}
}
}
本文由作者:陈希章

热点内容
htc忘记密码怎么解锁 发布:2025-05-14 06:04:42 浏览:100
3d画廊android 发布:2025-05-14 06:03:54 浏览:969
为什么文件夹有锁 发布:2025-05-14 05:53:21 浏览:945
安卓手机哪个处理器是最好的 发布:2025-05-14 05:40:23 浏览:530
java语言实现 发布:2025-05-14 05:34:43 浏览:234
数控系统主轴配置参数有哪些 发布:2025-05-14 05:25:55 浏览:819
二级缓存微服务 发布:2025-05-14 05:13:55 浏览:101
sqlserverwhencase 发布:2025-05-14 05:11:35 浏览:434
安卓odd是什么意思 发布:2025-05-14 04:49:57 浏览:921
安卓哪个app能查询航班 发布:2025-05-14 04:49:04 浏览:558