我需要使用sql server 2008构建与管理文档(如jpg,doc,msg,pdf)相关的表。
我知道sql server支持.jpg图像,所以我的问题是它是否可以将其他类型的文件上传到数据库中。
这是该表的一个示例(如果需要,可以重新定义)。
$('.push').each(function(){
if($(':first-child',this).hasClass( "activex" )){
$(this).off().off('click').on('click',function(){
var a = $(this).attr('id');
$.ajax({
type: "POST",
url: "includes/rcart.php",
data:{'pid': a},
success: function(data){
var a= parseInt($('.cart').text());
if((data.indexOf("2")) >= 0){
console.log(data);
console.log('not removed');
}
else {
a--;
console.log('removed');
$(this).removeClass('activex');
$('.cart').text(a);
}
}
});
console.log(a);
});
}
else {
$(this).on('click',function(){
var a = $(this).attr('id');
$.ajax({
type: "POST",
url: "includes/cart.php",
data:{'pid': a},
success: function(data){
console.log(data);
var a= parseInt($('.cart').text());
if((data.indexOf("2")) >= 0){
console.log('done');
}
else {
a++;
$('.cart').text(a);
$(this).addClass('activex');
}
}
});
console.log(a);
});
}
});
这些是表的初始值,但我不知道如何使它对任何类型都有用。
pd:我需要分配一个目录来将这些文件保存到服务器中吗?
答案 0 :(得分:3)
你几乎可以在sql server表中存储任何文件类型......如果你这样做,你几乎肯定会后悔。
将数据的元数据/指针存储在数据库中,并将文件本身存储在磁盘上,直接存放在磁盘上。
您的数据库大小 - 以及运行它所需的硬件 - 将会非常迅速地增长,因此您将承担不需要承担的大量成本。
答案 1 :(得分:1)
使用文件流
https://docs.microsoft.com/en-us/sql/relational-databases/blob/filestream-sql-server
我知道只有链接的答案不是答案,但我无法相信没有人提及它
答案 2 :(得分:1)
正确的数据库设计模式不将文件保存到DBMS中。您应该开发一种文件管理器子系统来管理所有项目的文件。
文件管理器子系统
此子系统应该是可重用,可扩展,安全等。您想要保存文件的所有项目都可以使用此子系统。
文件可以保存在每个地方,例如本地硬盘,网络云端硬盘,外置硬盘,云等等。所以这个子系统应该设计成支持所有类型的请求。
(您可以通过向其添加许多功能来改进上述子系统。例如检查重复文件,...)
此子系统应为每个文件生成唯一键。上传并保存文件后,子系统应生成该密钥。
现在,您可以使用此唯一键来保存在数据库中(而不是文件)。每次如果要获取文件,都可以从数据库中获取唯一键,并请求通过唯一键从子系统获取文件。