upload文件夹放入服务器里,将文件夹上载到目录服务器

我不确定这是您要找的内容,但有时上传压缩文件夹(压缩级别较低)并在服务器上解压缩可能会更容易,如果您可以在客户端进行管理。如果它适用于您,您可以使用免费的.net zip库,如SharpZipLib,因此您不必自己编写压缩例程。

这里也是使用thr SharZipLib压缩/解压缩文件夹的类:

using System;

using System.Collections;

using System.IO;

using ICSharpCode.SharpZipLib.Zip;

namespace ENSI.Releaser.Code

{

public class ZipUtility

{

public void ZipFiles(string inputFolderPath, string outputPathAndFile, string password)

{

ArrayList ar = GenerateFileList(inputFolderPath); // generate file list

int trimLength = (Directory.GetParent(inputFolderPath)).ToString().Length;

// find number of chars to remove // from orginal file path

trimLength += 1; //remove '\'

FileStream ostream;

byte[] obuffer;

string outPath = inputFolderPath + @"\" + outputPathAndFile;

var oZipStream = new ZipOutputStream(File.Create(outPath)); // create zip stream

if (!string.IsNullOrEmpty(password))

oZipStream.Password = password;

oZipStream.SetLevel(9); // maximum compression

ZipEntry oZipEntry;

foreach (string fil in ar) // for each file, generate a zipentry

{

oZipEntry = new ZipEntry(fil.Remove(0, trimLength));

oZipStream.PutNextEntry(oZipEntry);

if (!fil.EndsWith(@"/")) // if a file ends with '/' its a directory

{

ostream = File.OpenRead(fil);

obuffer = new byte[ostream.Length];

ostream.Read(obuffer, 0, obuffer.Length);

oZipStream.Write(obuffer, 0, obuffer.Length);

}

}

oZipStream.Finish();

oZipStream.Close();

}

private ArrayList GenerateFileList(string dir)

{

var fils = new ArrayList();

bool Empty = true;

foreach (string file in Directory.GetFiles(dir)) // add each file in directory

{

fils.Add(file);

Empty = false;

}

if (Empty)

{

if (Directory.GetDirectories(dir).Length == 0)

// if directory is completely empty, add it

{

fils.Add(dir + @"/");

}

}

foreach (string dirs in Directory.GetDirectories(dir)) // recursive

{

foreach (object obj in GenerateFileList(dirs))

{

fils.Add(obj);

}

}

return fils; // return file list

}

public void UnZipFiles(string zipPathAndFile, string outputFolder, string password, bool deleteZipFile)

{

var s = new ZipInputStream(File.OpenRead(zipPathAndFile));

if (!string.IsNullOrEmpty(password))

s.Password = password;

ZipEntry theEntry;

string tmpEntry = String.Empty;

while ((theEntry = s.GetNextEntry()) != null)

{

string directoryName = outputFolder;

string fileName = Path.GetFileName(theEntry.Name);

// create directory

if (directoryName != "")

{

Directory.CreateDirectory(directoryName);

}

if (fileName != String.Empty)

{

if (theEntry.Name.IndexOf(".ini") < 0)

{

string fullPath = directoryName + "\\" + theEntry.Name;

fullPath = fullPath.Replace("\\ ", "\\");

string fullDirPath = Path.GetDirectoryName(fullPath);

if (!Directory.Exists(fullDirPath)) Directory.CreateDirectory(fullDirPath);

FileStream streamWriter = File.Create(fullPath);

int size = 2048;

byte[] data = new byte[size];

while (true)

{

size = s.Read(data, 0, data.Length);

if (size > 0)

{

streamWriter.Write(data, 0, size);

}

else

{

break;

}

}

streamWriter.Close();

}

}

}

s.Close();

if (deleteZipFile)

File.Delete(zipPathAndFile);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值