區域網內基於WEB的檔案傳輸解決方案詳解 (轉)
作者:tonny
E:master@weiw.com">webmaster@weiw.com
轉載請顯示出處:
環境說明:
內的兩臺,一臺當作主WEB伺服器,一臺作伺服器,
兩伺服器操作為 professional(或win2000 server)
主WEB伺服器 區域網內部URL: 外部URL
伺服器名為:main WEB站點的埠為8080
檔案伺服器 區域網內部URL:
伺服器計算機名為:file WEB站點的埠為8080
需求介紹:
訪問者訪問WEB伺服器,檔案時將檔案放於檔案伺服器,如生成一些資訊之類的靜態頁面,也在檔案伺服器上生成。WEB伺服器並不保留檔案副本。並且允許生成X格式的檔案。
解決方法:
檔案伺服器IIS設定站點。,設一目錄用於存放上傳檔案,命名為UpFile。
並且把當前目錄屬性-->-->中加入一預留給專供上傳的域賬號,許可權當然是完全控制。
在WEB伺服器上,根目錄下原先有Upfile目錄。現將此目錄從IIS中刪除,然後在IIS中建立一虛擬目錄,名為Upfile,目標指向檔案伺服器上的Upfile目錄。當然還是要加上可寫可讀的許可權。
將檔案上傳至檔案伺服器的例子:
test.cs (執行於Web伺服器上的程式)
using System.Text;
string virtualPath="test01"; //欲建立在upfile目錄下的資料夾名稱;
string UpfilePath = @""; //檔案伺服器 (非本程式執行的伺服器)
string uriString = rootUpfilePath + virtualPath +"/"; //URL路徑
//CreateDirectory. 此檔案用於在目的伺服器(檔案伺服器)上Upfile目錄下,用於建立相應目錄。
string path = rootUpfilePath + "CreateDirectory.aspx?Path="+virtualPath;
string filename="test.htm"; //此為生成的檔名
string MyString = "這是建立的檔案內容" ;
UTF8Encoding AE = new UTF8Encoding();
byte[] input = AE.GetBytes(MyString);
int intLength=input.Length;
string username = @"ain_acqweb"; //“域名稱域使用者名稱”
string pass = @"123456"; //域使用者密碼
System.NetworkCredential myCred = new System.Net.NetworkCredential(username, password);
//為基於密碼的身份驗證方案提供憑據
System.Net.WebClient Client = new System.Net.WebClient();
//提供向 URI 標識的資源傳送資料和從 URI 標識的資源接收資料的公共方法
System.Net.CredentialCache myCache = new System.Net.CredentialCache();
// Internet 資源的憑據
myCache.Add(new Uri(uriString), "NTLM", myCred);
//向憑據快取新增 NetworkCredential 例項
byte[] buffer = new byte[128];
Stream stream = Client.OpenRead(path);
stream.Read(buffer, 0, 128); // 建立目錄
System.IO.Stream writeStream = Client.OpenWrite(uriString + filename ,"PUT");
writeStream.Write (input, 0, intLength);
writeStream.Close();
檔案伺服器 上的檔案CreateDirectory.aspx
" %>
">
System.IO.Directory.CreateDirectory(Server.MapPath(path));
%>
二、將aspx檔案生成至檔案伺服器的程式例子:
思路:直接透過http方式傳輸,檔案伺服器端會提示禁止訪問。因為安全問題,伺服器對ASPX,asp等檔案的有限制。限制是在.net 中做的,相關檔案是, machine.config。如果修改此檔案即可解決問題。我曾就此問題諮詢過微技術支援,回覆是,修改後會帶來其他安全問題,所以最好還不改這個。暫且也就只好用改副檔名的方式。傳之前,將副檔名改為html,到觸發檔案伺服器端程式,將副檔名改回aspx。由於在處理時,檔案編碼為強制改為UTF-8.會出現中文亂碼。所以還要把編碼改為ANSI。
///
/// 在Web目錄基礎下建立資料夾
///
/// 目錄路徑,如圖片庫為UpFiles/PhotoLib/
///
public static bool CreateNewFolderBaseWeb(string path)
{
string rootUpfilePath = Com.Common.SzcmConfiguration.FileWeb; ";
string uriString = rootUpfilePath + path;
path = rootUpfilePath + "CreateDirectory.aspx?Path=" + path;
string username = Com.Common.SzcmConfiguration.UploadFileUser; ";
string password = Com.Common.SzcmConfiguration.UploadFilePassword; ";
System.Net.NetworkCredential myCred = new System.Net.NetworkCredential(username, password);
System.Net.WebClient Client = new System.Net.WebClient();
System.Net.CredentialCache myCache = new System.Net.CredentialCache();
// myCache.Add(new Uri(this.Page.Application["__FSPATH__"].ToString()),"NTLM",myCred);
myCache.Add(new Uri(uriString), "NTLM", myCred);
// Client.Credentials = myCache;
// 建立目錄
//byte[] buffer = new byte[128];
Stream stream = Client.OpenRead(path);
//stream.Read(buffer, 0, 128);
}
///
/// 在Web目錄基礎下建立文字檔案
///
/// 指定的檔案(如WebOut/Article/1/20021022093422.html)
/// 文字檔案的內容
///
public static bool CreateTxtFileBaseWeb(string fileSpec, string content)
{
string path;
try
{
fileSpec = fileSpec.Replace("aspx","html"); //先把副檔名由aspx改為html
string virtualPath = fileSpec.Substring(0,fileSpec.LastIndexOf("/"));
string rootUpfilePath = Com.Common.SzcmConfiguration.UploadFileWeb; ";
string uriString = rootUpfilePath + virtualPath + "/"; //"upfiles/";
//在檔案伺服器上把生成的html副檔名改為aspx
path = rootUpfilePath + "ReNameFile.aspx?Path="+fileSpec;
System.Text.UTF8Encoding AE = new System.Text.UTF8Encoding();
byte[] input = AE.GetBytes(content);
//byte[] input = System.Text.Encoding.GetEncoding("UTF8").GetBytes(content);
int intLength=input.Length;
string username = Com.Common.SzcmConfiguration.UploadFileUser; ";
string password = Com.Common.SzcmConfiguration.UploadFilePassword; ";
System.Net.NetworkCredential myCred = new System.Net.NetworkCredential(username, password);
System.Net.WebClient Client = new System.Net.WebClient();
System.IO.Stream writeStream = Client.OpenWrite(rootUpfilePath + fileSpec ,"PUT");
//System.IO.Stream writeStream = Client.OpenWrite(rootUpfilePath + "upfiles/tt.txt" ,"PUT");
writeStream.Write(input, 0, intLength);
writeStream.Close();
Stream stream = Client.OpenRead(path); //在觸發檔案伺服器端的改名程式。
return true;
}
catch (Exception ex )
{
throw ex;
return false;
}
}
檔案伺服器 上的檔案ReNameFile.aspx
System.IO.FileInfo fi = new System.IO.FileInfo(Server.MapPath(path));
string content;
System.IO.StreamReader oRead = fi.OpenText();
content = oRead.ReadToEnd();
oRead.Close();
System.IO.FileStream fileStream = new System.IO.FileStream( Server.MapPath(path), System.IO.FileMode.Create );
System.IO.StreamWriter streamWriter = new System.IO.StreamWriter( fileStream ,System.Text.Encoding.Default );
streamWriter.Write( content );
streamWriter.Close();
if (path.IndexOf("html")>0)
{
path = path.Replace("html","aspx");
fi.MoveTo(Server.MapPath(path));
}
%>
注意:此時,如果仍出現錯誤,提示無許可權,可能是WEB伺服器的存放臨時檔案處的許可權問題。還要設定一下Framework.
C:WINNTMicrosoft.NETFrameworkv1.0.3705Temporary Files
把此目錄許可權開放給everyone
再檢查一下machine.config中節名為processModel的userName屬性值是否為"本機名aspnet"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958707/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於rsync實現海量檔案高速傳輸的解決方案
- 基於電子健康檔案的區域醫療 SOA 解決方案
- 怎樣的檔案跨區域傳輸方案,可以解決企業的燃眉之急?
- 基於Service Worker實現WebRTC區域網大檔案傳輸能力Web
- 針對IT網際網路行業的檔案傳輸解決方案行業
- win10區域網內傳檔案很慢怎麼辦 win10區域網內檔案傳輸很慢如何處理Win10
- 如何分發大檔案、大檔案傳輸解決方案
- 鐳速傳輸針對汽車行業的檔案傳輸解決方案行業
- 大檔案傳輸解決方案:分片上傳 / 下載限速
- 如何實現檔案高速傳輸,推薦鐳速高速檔案傳輸解決方案
- 關於檔案上傳元件國內外完美解決方案的調查元件
- 【一文詳解】內外網檔案擺渡系統,解決網間資料安全傳輸問題
- 基於內建web工作流的政府OA解決方案Web
- 鐳速傳輸:4種提升檔案傳輸解決方案安全性的方法
- win10系統區域網傳輸檔案操作方法 win10怎麼通過區域網傳輸檔案Win10
- win10系統區域網傳輸檔案操作方法 win10怎麼透過區域網傳輸檔案Win10
- 醫院區域網影片加密解決方案加密
- 基於.NET的程式讀取Excel檔案的解決方案Excel
- 基於Gin框架的web後端開發(七): Gin框架的檔案上傳詳解框架Web後端
- Win10怎麼搭建FTP伺服器區域網內傳輸檔案Win10FTP伺服器
- ASP中多檔案同時上傳解決方案 (轉)
- 基於React的大檔案上傳元件的開發詳解React元件
- 一文詳解:跨國醫療機構安全合規檔案流轉的跨境傳輸解決辦法
- 鐳速傳輸:保護企業資料傳輸和檔案傳輸的最佳解決方案是什麼?
- win10系統區域網怎麼傳送檔案 win10電腦設定區域網傳輸檔案的方法Win10
- 基於struts專案許可權解決方案的探索 (轉)
- 如何將檔案放在正確位置?2020年的檔案傳輸解決方案
- 大檔案傳輸解決方案,不應該只看吞吐量
- 無線區域網+藍芽技術單晶片解決方案(轉)藍芽晶片
- win10區域網怎麼快速傳檔案_win10區域網傳檔案的方法Win10
- 區域網內網速度慢的原因及解決方法內網
- 內網控制解決方案內網
- 駭客網路攻擊檔案傳輸協議(FTP)的4種型別及解決方案協議FTP型別
- 企業內應用區域網傳輸架構架構
- Flutter Web 跨域問題解決方案FlutterWeb跨域
- Redhat區域網安裝的解決辦法(轉)Redhat
- 區域網防雷電攻擊實用解決方案
- 關於內外網資料同步解決方案