b/s 读取多个FTP文件(图片,视频)压缩到服务器 下载到客户端
其实需求是这样,
要做一键导出,
有图片,有照片,youhtml,存在不同的文件夹,每次下载都必须下载最新数据,因为FTP是随时更新的。
1.这要是一直下载下载,浏览器一直跳窗口,蛋疼的我都看不下去。所以,只能选择别的办法
2.要是放在WEB下载,我觉得肯定会崩溃的呀,所以想选择客户端直接下载,但是必须得装插件,类型ActionX之类的。头给否认了。我凑,只能想别的办法
3.只能先用WEB把流读下来,压缩,然后传给用户,很蛋疼,这要是谁点了,多考验服务器内存CPU,但是头说了,这样也比插件好,好吧,开始做吧
学习连接
http://www.csharpwin.com/dotnetspace/7579r311.shtml
下面是代码
#region Zip multi files
public static int Zip(string destFolder, string[] srcFiles, string folderName, CompressLevel level)
{
OperFileFTP operFileFTP = new OperFileFTP();
ZipOutputStream zipStream = null;
int count = ;
string snappath = "ftp://ip";
try
{
//Use Crc32
Crc32 crc32 = new Crc32();
Stream ftpoutStream = null;
//Create Zip File
zipStream = new ZipOutputStream(File.Create(destFolder));
//Specify Level
zipStream.SetLevel(Convert.ToInt32(level));
#region Foreach File;
foreach (string file in srcFiles)
{
Uri u;
if (file != null)
{
string filepath = file;
string ftpfilepath = file;
if (Path.GetExtension(file) == ".jpg")
{
u = new Uri(snappath);
filepath = filepath.Replace("\\", "/");
ftpfilepath = ftpfilepath.Replace("\\", "/");
}
else
{
u = new Uri(ftppath);
}
filepath = filepath.Substring(, filepath.LastIndexOf("/"));
clsFTP cs = new clsFTP(u, entity.User_Name, entity.Pwd);
byte[] buffer = cs.DownloadFile(ftpfilepath);
//Specify ZipEntry
crc32.Reset();
crc32.Update(buffer);
ZipEntry zipEntry = new ZipEntry(Path.Combine(filepath, Path.GetFileName(file)));
zipEntry.DateTime = DateTime.Now;
zipEntry.Size = buffer.Length;
zipEntry.Crc = crc32.Value;
//Put file info into zip stream
zipStream.PutNextEntry(zipEntry);
zipStream.Write(buffer, , buffer.Length);
count++;
}
}
if (!string.IsNullOrEmpty(folderName))
{
byte[] buffer = System.Text.Encoding.Default.GetBytes(folderName);
//Specify ZipEntry
crc32.Reset();
crc32.Update(buffer);
ZipEntry zipEntry = new ZipEntry(Path.Combine("", Path.GetFileName("OperationReport.htm")));
zipEntry.DateTime = DateTime.Now;
zipEntry.Size = buffer.Length;
zipEntry.Crc = crc32.Value;
//Put file info into zip stream
zipStream.PutNextEntry(zipEntry);
//Put file data into zip stream
zipStream.Write(buffer, , buffer.Length);
count++;
}
#endregion;
if (ftpoutStream != null)
ftpoutStream.Flush();
}
catch
{
throw;
}
finally
{
//Clear Resource
if (zipStream != null)
{
zipStream.Finish();
zipStream.Close();
}
}
FileStream stream = new FileStream(destFolder, FileMode.Open);
//long cl = stream.ContentLength;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpContext.Current.Server.UrlEncode(Path.GetFileName(destFolder)));
int bufferSize = ;
int readCount;
byte[] bufferr = new byte[bufferSize];
char[] cChar = Encoding.ASCII.GetChars(bufferr);
//接收FTP文件流
while ((readCount = stream.Read(bufferr, , )) > )
{
HttpContext.Current.Response.OutputStream.Write(bufferr, , readCount);
HttpContext.Current.Response.Flush();
}
stream.Flush();
stream.Close();
if (File.Exists(destFolder))
File.Delete(destFolder);
return count;
}
#endregion
方法如上。。
一下为引用代码。。
时间有限,有机会补充
string[] files = new string[];
Zip(context.Server.MapPath("Tech_" + id + ".zip"), files, str, CompressLevel.Level8);
b/s 读取多个FTP文件(图片,视频)压缩到服务器 下载到客户端的更多相关文章
- smbclient - 类似FTP操作方式的访问SMB/CIFS服务器资源的客户端
总览 SYNOPSIS smbclient {servicename} [password] [-b <buffer size>] [-d debuglevel] [-D Director ...
- webpack处理媒体文件(图片/视频和音频)
webpack最终会将各个模块打包成一个文件,因此我们样式中的url路径是相对入口html页面的, 这个问题是用file-loader解决的,file-loader可以解析项目中的url引入(不仅限于 ...
- MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01-单文件上传
前段时间做了几个关于图片.文件上传的Demo,使用客户端Query-File-Upload插件和服务端Badkload组件实现多文件异步上传,比如"MVC文件上传04-使用客户端jQuery ...
- Java实现FTP文件与文件夹的上传和下载
Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...
- FTP文件操作之下载文件
前面写了采用ftp上传文件,有了上传怎么能够没有下载呢?如果只有上传没有下载,那上传了也没啥用了.所以今天就跟大家一起学习学习使用ftp下载文件. 知道了怎么上传,那么下载也就变得很简单了,上传是把文 ...
- C#本地文件下载以及FTP文件服务下载(以Pdf文件为例)
一.C#实现本地文件下载 1.文件下载的路径 文件名称 以及文件下载之后要放的位置 这三个变量是必须要的 2.定义以下四个对象: FileWebRequest ftpWebRequest = nu ...
- 读取FTP 图片文件,并显示,非下载
关于FTP,先从怎么创建开始说起,很简单,步骤就两个 ① 电脑-右键管理--本地用户组--添加用户名,密码(用于FTP的用户名.密码) ② IIS 新建FTP站点,命名,指定端口号.FTP文件路径 接 ...
- informatica读取FTP文件
以下为一个完整的informatica读取ftp文件,并导入到系统中. 第一步: 通过shell脚本下载压缩包文件 /server/infa_shared/crm_prod/shell/ftpFrom ...
- 【数据下载】利用wget命令批量下载ftp文件和文件夹
这是一个“”数据大发现”的时代,大家都在创造数据,使用数据以及分享数据,首先一步我们就需要从数据库download我们需要的数据. Ftp是一种常见的在线数据库,今天介绍一种可以批量下载文件夹的方法, ...
随机推荐
- C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)
C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT) private Microsoft.Office.Intero ...
- FireMonkey 保存图片到JPG的方法 BMP转JPG
习惯VCL的做法了,到了FireMonkey里面,好像查不到单独的JPEG单元了,不少朋友就郁闷如何处理JPG了,这么大件事,不可能没有处理方法的,具体就请看代码: uses FMX.Surfaces ...
- Asp.Net Core 项目从 1.0.1 升级到 1.1.0 的小补丁
还有 25 天就要交期末作业了,虽然还有好些功能没完成,但是前端同学还是建议先放到云上跑一跑,于是我轻车熟路的用 VS 2017 搞起了 FTP 发布,然而,发布失败了,错误信息如下: "D ...
- mac攻略(七) -- 环境变量PATH分析
一.首先需要了解 1>mac 一般使用bash作为默认shell 2>Mac系统的环境变量,加载顺序为: 1.系统级别的 /etc/profile /etc/bashrc /etc/p ...
- python 中的decorator
python 中decorator的作用就是一个包装的作用,所谓包装指在执行真正的函数之前或者之后,我们可以有一些额外的发挥余地. decorator形式如下 def dec(arg1): print ...
- 【前端】Node.js学习笔记
module.exports 使用方式: // File Name: hello.js function greet() {/*......*/} // 有下面这两种写法: // 1. module. ...
- jQuery事件总结
blur() 触发或绑定blur事件.$("input").blur(function(){ $("input").css("background-c ...
- 【leetcode❤python】 125. Valid Palindrome
#-*- coding: UTF-8 -*- class Solution(object): def isPalindrome(self, s): ""&quo ...
- redis 常用配置
参数说明 redis.conf 配置项说明如下: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式 ...
- javaScript 验证表单提交
<script type="text/javascript"> function $(id) { return document.getEl ...