asp.net实现上传指定格式为.rar .zip.pdf.txt.doc.ppt.excel至少这7种格式
要以二进制流的形式保存到数据库,并能够实现从数据库中读取出来进而实现下载,要有详细的代码,不管是不是网上粘贴的,只要符合我的要求,看的满意我就会重赏。还有能不能实现预览,...
要以二进制流的形式保存到数据库,并能够实现从数据库中读取出来进而实现下载,要有详细的代码,不管是不是网上粘贴的,只要符合我的要求,看的满意我就会重赏。还有能不能实现预览,因为上传的文件要经过管理员的审核才能下载!
展开
4个回答
展开全部
1、上传什么文件都可以,关键是空间商让不让你传这些格式的文件。
2、判断文件格式,可以百度一下“C# 文件类型判断”,这是服务器安全的问题必须要注意的。
3、上传时,文件重命名(不重命名的话文件将被无提示的覆盖,建议年月日时分秒毫秒的形式为文件前缀,这样就不会有重复了),把文件路径和文件名写入数据库即可,至少神马上传机制、写入流程这些东东你不用管,电脑会自动完成。
4、在网站上给出文件链接即可,这样用户就可以下载了,至少用户选择IE的另存为还是迅雷等方式,由用户自己去选择。
希望给你一些思路,能帮到你。
2、判断文件格式,可以百度一下“C# 文件类型判断”,这是服务器安全的问题必须要注意的。
3、上传时,文件重命名(不重命名的话文件将被无提示的覆盖,建议年月日时分秒毫秒的形式为文件前缀,这样就不会有重复了),把文件路径和文件名写入数据库即可,至少神马上传机制、写入流程这些东东你不用管,电脑会自动完成。
4、在网站上给出文件链接即可,这样用户就可以下载了,至少用户选择IE的另存为还是迅雷等方式,由用户自己去选择。
希望给你一些思路,能帮到你。
展开全部
预览这个你可以重新写一个页面
我这个是用三层做的,我只给你一个用二进制流存照片例子、我这个代码太多
model层
//照片,二进制数组来操作
public byte[] Photo { get; set; }
DAL层
//这里执行插入数据库的SQL语句
public void Insert(Employee employee)
{
SqlHelper.ExecuteNonQuery("insert into tbl_Employee(Photo)values (@Photo)",
new SqlParameter("@Photo", SqlHelper.GoToDBNull(employee.Photo))
);
}
SQLHELPER是我自己写的一个类,我把这个ExecuteNonQuery的方法粘给你
public static int ExecuteNonQuery(string sql,params SqlParameter[] parameter)
{
using (SqlConnection conn= new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd= conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter);
return cmd.ExecuteNonQuery();
//ExecuteNonQuery对连接执行SQL语句并返回受影响行数
}
}
}
UI层
这个是一个上传照片的按钮,上传了就当做二进制流读进来
OpenFileDialog ofdPhot = new OpenFileDialog();
ofdPhot.Filter = "JPG|*.jpg|ico|*.ico";//你可以在这个地方增加你的那些所有的文件格式
if (ofdPhot.ShowDialog()==true)
{
Employee employee = (Employee)gridEmployee.DataContext;//这儿你可以不用写
//这里开始读照片
string filename = ofdPhot.FileName;
employee.Photo = File.ReadAllBytes(filename);//读取文件的二进制数据
imgPhoto.Source = new BitmapImage(new Uri(filename));
}
这个是一个确定的按钮、调用上面的insert方法
Employee employee = (Employee)gridEmployee.DataContext;//整个页面我用了数据上下文,就是DataContext,这个比较快一点,你可以用一个控件给他src赋值为上面的上传的文件
new EmployeeDAL().Insert(employee);//这里执行插入数据库的语句
现在不流行用二进制流存照片还是存其他的文件,数据库负担太重了。都是在项目下面搞一个文件夹、上传的文件放在里面,在数据库里面存他的路径,读的时候根据路径从那儿读就可以了
我这个是用三层做的,我只给你一个用二进制流存照片例子、我这个代码太多
model层
//照片,二进制数组来操作
public byte[] Photo { get; set; }
DAL层
//这里执行插入数据库的SQL语句
public void Insert(Employee employee)
{
SqlHelper.ExecuteNonQuery("insert into tbl_Employee(Photo)values (@Photo)",
new SqlParameter("@Photo", SqlHelper.GoToDBNull(employee.Photo))
);
}
SQLHELPER是我自己写的一个类,我把这个ExecuteNonQuery的方法粘给你
public static int ExecuteNonQuery(string sql,params SqlParameter[] parameter)
{
using (SqlConnection conn= new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd= conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter);
return cmd.ExecuteNonQuery();
//ExecuteNonQuery对连接执行SQL语句并返回受影响行数
}
}
}
UI层
这个是一个上传照片的按钮,上传了就当做二进制流读进来
OpenFileDialog ofdPhot = new OpenFileDialog();
ofdPhot.Filter = "JPG|*.jpg|ico|*.ico";//你可以在这个地方增加你的那些所有的文件格式
if (ofdPhot.ShowDialog()==true)
{
Employee employee = (Employee)gridEmployee.DataContext;//这儿你可以不用写
//这里开始读照片
string filename = ofdPhot.FileName;
employee.Photo = File.ReadAllBytes(filename);//读取文件的二进制数据
imgPhoto.Source = new BitmapImage(new Uri(filename));
}
这个是一个确定的按钮、调用上面的insert方法
Employee employee = (Employee)gridEmployee.DataContext;//整个页面我用了数据上下文,就是DataContext,这个比较快一点,你可以用一个控件给他src赋值为上面的上传的文件
new EmployeeDAL().Insert(employee);//这里执行插入数据库的语句
现在不流行用二进制流存照片还是存其他的文件,数据库负担太重了。都是在项目下面搞一个文件夹、上传的文件放在里面,在数据库里面存他的路径,读的时候根据路径从那儿读就可以了
追问
我要是把以上几种类型的文件以二进制流存在数据库,怎么实现从数据库中读取数据并下载的功能,因为文件有各种类型的,不知道怎么还原那些不同格式的文件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
b/s结构的,只能判断文件后缀名了,winform的可以在按钮事件里面判断!
Filter = "JPG|*.jpg|ico|*.ico";
Filter = "JPG|*.jpg|ico|*.ico";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你参考下PageOffice吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询