123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- using System;
- using System.IO;
- using System.Net;
- using System.Text;
- using System.Xml;
- using System.Configuration;
- using System.Web;
- using System.Collections.Generic;
- using Ionic.Zip;
- namespace Bowin.Common
- {
- /// <summary>
- /// FileManager 的摘要说明。
- /// </summary>
- public class FileManager
- {
- public string ErrorMessage;
- private CredentialCache myCredentialCache;
- private string password;
- private string url;
- private string username;
- public FileManager()
- {
- this.ErrorMessage = "";
- this.username = ConfigurationManager.AppSettings["__ImportDataFileUser__"];
- this.password = ConfigurationManager.AppSettings["__ImportDataFilePass__"];
- this.url = ConfigurationManager.AppSettings["__ImportDataFileUrl__"];
- if (this.url.Length > 0)
- {
- if (this.url.Substring(this.url.Length - 1, 1) == "/")
- {
- this.url = this.url;
- }
- else
- {
- this.url = this.url + "/";
- }
- }
- this.myCredentialCache = new CredentialCache();
- this.myCredentialCache.Add(new Uri(this.url), "NTLM", new NetworkCredential(this.username, this.password));
- }
- public bool DeleteFile(string filename)
- {
- this.ErrorMessage = "";
- HttpWebRequest request = (HttpWebRequest) WebRequest.Create(this.url + filename);
- request.Credentials = this.myCredentialCache;
- request.Method = "DELETE";
- WebResponse response = null;
- try
- {
- response = request.GetResponse();
- }
- catch (WebException ex)
- {
- this.ErrorMessage = ex.Message;
- return false;
- }
- finally
- {
- if (response != null)
- {
- response.Close();
- }
- }
- return true;
- }
- public bool IsFileExist(string filename)
- {
- this.ErrorMessage = "";
- string text1 = "<?xml version=\"1.0\"?><a:propfind xmlns:a=\"DAV:\"><a:prop><a:getcontentlength/></a:prop></a:propfind>";
- byte[] buffer1 = new ASCIIEncoding().GetBytes(text1);
- HttpWebRequest request = (HttpWebRequest) WebRequest.Create(this.url + filename);
- request.Credentials = this.myCredentialCache;
- request.Method = "PROPFIND";
- request.ContentType = "text/xml";
- request.Headers.Add("Depth", "0");
- request.Headers.Add("Translate: f");
- request.ContentLength = buffer1.Length;
- Stream stream = request.GetRequestStream();
- stream.Write(buffer1, 0, buffer1.Length);
- stream.Close();
- WebResponse response = null;
- try
- {
- response = request.GetResponse();
- }
- catch (WebException ex)
- {
- if (ex.Message.IndexOf("404") == -1)
- {
- this.ErrorMessage = ex.Message;
- throw ex;
- }
- return false;
- }
- finally
- {
- if (response != null)
- {
- response.Close();
- }
- }
- return true;
- }
- public bool UploadFile(Stream inputStream, string filename)
- {
- this.ErrorMessage = "";
- WebClient client = new WebClient();
- client.Credentials = this.myCredentialCache;
- int num1 = (int)inputStream.Length;
- byte[] buffer1 = new byte[num1];
- inputStream.Read(buffer1, 0, num1);
- Stream stream = client.OpenWrite(this.url + filename, "PUT");
- stream.Write(buffer1, 0, num1);
- try
- {
- stream.Close();
- }
- catch (WebException ex)
- {
- this.ErrorMessage = ex.Message;
- return false;
- }
- return true;
- }
- public bool UploadFile(byte[] buffer, string filename)
- {
- this.ErrorMessage = "";
- WebClient client = new WebClient();
- client.Credentials = this.myCredentialCache;
- Stream stream = client.OpenWrite(this.url + filename, "PUT");
- stream.Write(buffer, 0, buffer.Length);
- try
- {
- stream.Close();
- }
- catch (WebException ex)
- {
- this.ErrorMessage = ex.Message;
- return false;
- }
- return true;
- }
- public Stream ReadFile(string FileName)
- {
- Stream stream = System.IO.File.OpenRead(FileName);
- return stream;
- }
- /// <summary>
- /// 下载文件服务器中的文件
- /// </summary>
- /// <param name="virtualFilePath">目标文件的虚拟路径</param>
- /// <param name="remoteFile">远程文件地址</param>
- public static void DownloadFile(string virtualFilePath, string remoteFile)
- {
- WebClient conn = new WebClient();
- var targetFile = remoteFile;
- File.Delete(HttpContext.Current.Server.MapPath(virtualFilePath));
- if (!remoteFile.Trim().StartsWith("http://"))
- {
- targetFile = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
- if (!remoteFile.StartsWith("/"))
- {
- targetFile += "/";
- }
- targetFile += remoteFile;
- }
- conn.DownloadFile(targetFile, HttpContext.Current.Server.MapPath(virtualFilePath));
- }
- }
- }
|