asp.net 怎么样才能批量下载图片呢

heimen 2008-07-29 04:32:35
有一datagrid里面有一模板列是图片缩略图和一模板框CheckBox1可以选择同时下载多个图片,图片是二进制放在数据库中的。
当用户选择多个需要下载的图片后点一下下载按钮就可以从数据库下一起下载多个图片,我想是需要在后台用.rar打包一起才能实现吧,但找了资料都没有这方面的

哪一位有做过的是否可以给一下源代码看一看,在此先谢了

下个月就辞职了,复活走前希望把这最后一个项目好好做完
...全文
670 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesialiy 2012-03-03
  • 打赏
  • 举报
回复
看看
这还短啊
静思长远 2011-12-12
  • 打赏
  • 举报
回复
学习中!
luo_yuee 2011-10-17
  • 打赏
  • 举报
回复
xuexizhong
woowtaotao 2011-03-19
  • 打赏
  • 举报
回复
看看!!!
sincereit_csm 2010-01-05
  • 打赏
  • 举报
回复
看看都要回复,汗!
glacier000 2009-08-03
  • 打赏
  • 举报
回复
同样期待中……,不知楼主如何解决的?
heimen 2008-07-30
  • 打赏
  • 举报
回复
private void toimages()
{
try
{
String strID = "-1";
strID = "B02008072883";
string tempnamepath = System.Guid.NewGuid().ToString();
string connStr = ConfigurationSettings.AppSettings["ImageDB"];
SqlConnection conns = new SqlConnection(connStr);
String sql = "SELECT [PartRecordid],[Images],[ImageSNID],[qianzhong],[Valid] FROM [ImageDB].[dbo].[tdImages] where ImageSNID='" + strID + "'";
SqlCommand command = new SqlCommand(sql, conns);

conns.Open();
SqlDataReader dr = command.ExecuteReader();
dr.Read();
byte[] imgdata = (byte[])dr["Images"];
FileStream fsFile = null;
string path = Server.MapPath("DowndLoad") + "\\" + tempnamepath;
if (!System.IO.Directory.Exists(path))
System.IO.Directory.CreateDirectory(path);


fsFile= File.Create(path + "\\" + strID+".jpeg");
try
{
fsFile.Write(imgdata, 0, imgdata.Length);
}
catch
{
// unable to write to the file..
fsFile.Close();

}
fsFile.Close();
fsFile.Dispose();
string[] FilePathS = new string[2];
FilePathS[0] = path; //待压缩的文件目录
FilePathS[1] = "DowndLoad" + "\\" + tempnamepath+"\\"+tempnamepath + ".rar"; //生成的目标文件
ZipClass.ZipFileDictory(FilePathS);
dr.Close();
conns.Close();
}
catch
{

}
}
ZipClass.ZipFileDictory(FilePathS);这句话在压缩时会把很长的路径一起压缩进去,这样就会打开很多层才能看到需要的图片,很不方便,不知各位有没有方法做到可以像右键然后直接压缩那样的效果,这样打开就马上可以看到哪个图片了
heimen 2008-07-29
  • 打赏
  • 举报
回复
我也想把图片放文件夹里呀,但局里的人说这不好管理呀,以后图片多了还打不开文件夹,不好备份
眼里进了砂 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cpp2017 的回复:]
1.要先读数据库将文件存在本地上
2.再调用压缩程序,压缩.

其实文件不一定要放在数据库才安全的,放在数据库效率不高,且麻烦..
[/Quote]
同意
hebeijg 2008-07-29
  • 打赏
  • 举报
回复
学习
cpp2017 2008-07-29
  • 打赏
  • 举报
回复
1.要先读数据库将文件存在本地上
2.再调用压缩程序,压缩.

其实文件不一定要放在数据库才安全的,放在数据库效率不高,且麻烦..
duanxiaoming52 2008-07-29
  • 打赏
  • 举报
回复
学习中
heimen 2008-07-29
  • 打赏
  • 举报
回复
具体怎么实现能给出源代码吗,谢谢了,查了好久的资料都没有适合的思路
yagebu1983 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 guyan033 的回复:]
用 ZipOutputStream, ZipEntry 类来实现
[/Quote]
sunshine_anycall 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 meixiafeng 的回复:]

[/Quote]
heimen 2008-07-29
  • 打赏
  • 举报
回复
要实现下载的功能按照楼主的代码只能把数据库的图片下载到本地文件夹上吗,有没有直接从数据库读的
尐孑 2008-07-29
  • 打赏
  • 举报
回复
尐孑 2008-07-29
  • 打赏
  • 举报
回复
guyan033 2008-07-29
  • 打赏
  • 举报
回复
用 ZipOutputStream, ZipEntry 类来实现
happyfamily 2008-07-29
  • 打赏
  • 举报
回复
做个参考吧
/// <summary>
/// 解压缩指定的rar文件。
/// </summary>
/// <param name="rarFileToDecompress">rar文件(绝对路径)。</param>
/// <param name="directoryToSave">解压缩保存的目录。</param>
/// <param name="deleteRarFile">解压缩后删除rar文件。</param>
public void Decompress()
{
string directoryToSave = @"E:\CsDocument\FormDemo\";
string rarFileToDecompress = @"E:\CsDocument\FormDemo\文本文档.rar";

Process p = new Process();
// 需要启动的程序名
p.StartInfo.FileName = @"E:\CsDocument\FormDemo\Winrar.exe" ;
// 参数
string arguments = @"x -inul -y -o+";

// if (password != null)
// {
// arguments += " -p" + password ;
// }
arguments += " " + rarFileToDecompress + " " + directoryToSave;

p.StartInfo.Arguments = arguments;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();//启动
while(!p.HasExited)
{
}
p.WaitForExit();

// if (deleteRarFile)
// {
// File.Delete(rarFileToDecompress);
// }
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧