因爲項目中用到了大量的文件上傳和刪除,考慮到安全的因素,因此總體的思路是使用FTP從主服務器把文件資源上傳到文件服務器上。html
FTP上傳到服務器的代碼以下(簡單附加一下,具體的網上不少)nginx
publicstaticvoid UploadFile(FileInfo fileInfo, string hostname, string username,string password) {string target;string targetDir = DateTime.Now.ToString("yyyy-MM-dd");//建立文件目錄MakeDir(targetDir,hostname,username,password);target = Guid.NewGuid().ToString();string URL = "FTP://" + hostname + "/" + targetDir + "/" + target;FtpWebRequest ftp = GetRequest(URL, username, password);ftp.Method = WebRequestMethods.Ftp.UploadFile;ftp.UseBinary = true;ftp.UsePassive = true;ftp.ContentLength = fileInfo.Length;constint BufferSize = 2048;byte[] content=newbyte[BufferSize];int dataRead;using (FileStream fs=fileInfo.OpenRead()){try{using (Stream rs = ftp.GetRequestStream()){do{dataRead = fs.Read(content, 0, BufferSize);rs.Write(content, 0, dataRead);} while (!(dataRead < BufferSize));rs.Close();}}catch (Exception){throw;}finally{fs.Close();Console.WriteLine("上傳成功");}ftp = GetRequest(URL, username, password);ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; //更名ftp.RenameTo =target+ fileInfo.Name.Substring(fileInfo.Name.IndexOf('.'));try{ftp.GetResponse();}catch (Exception ex){ftp = GetRequest(URL, username, password);ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; //刪除ftp.GetResponse();throw ex;}finally{//fileinfo.Delete();}// 能夠記錄一個日誌 "上傳" + fileinfo.FullName + "上傳到" + "FTP://" + hostname + "/" + targetDir + "/" + fileinfo.Name + "成功." );ftp = null;} }
文件上傳到服務器很簡單,接下來要經過瀏覽器的地址顯示文件(這裏主要是作圖片服務器),其實能夠建一個網站,而後經過網站的虛擬目錄來訪問圖片,可是我的感受這確定不是一種好的解決方案,因而想到了最近比較火的Nginx來作圖片代理。web
安裝Nginx,我在安裝的過程當中遇到了一個小問題(Windows 找不到文件Nginx...),這個錯誤是由於位置沒有定位正確,我使用的nginx-1.9.0版本,我只是定位到安裝文件的上級目錄,因此出現了這個錯誤,若是你出現了相似的錯誤,最簡單粗暴的方式就是找到nginx安裝程序,地址欄的地址直接粘出來就行。瀏覽器
另外一個問題就是80端口被佔用的狀況,當咱們配置完IIS後,默認端口被IIS的默認網站佔用,這時候,你只需把IIS的默認網站端口修改一下便可。緩存
安裝成功後任務管理器中會有二個進程安全
接下來在地址欄中輸入loaclhost,你就會發現會出現服務器
Nginx安裝成功後,修改nginx.conf文件。網站
location / { root html;indexindex.html index.htm;} location /Image{ #當訪問Image 文件夾的時候指定映射到真正的物理地址alias J:\FTPFinCloud;#默認的圖片index default.png;}#緩存圖片location ~.*.(gif|jpg|jpeg|png|bmp|swf)${expires 10d; }
而後執行nginx-t,成功後接着執行nginx -s reload.這時候就能夠訪問圖片了。ui
因爲我使用的本地的因此個人地址爲http://192.168.1.218/Image/2015-05-17/2015-05-17.jpg,spa
若是要發佈到遠程服務器上,須要綁定域名時怎麼辦。這時候只需在server內部配置一下便可
server { listen8080; server_name your_server_ip; location / { root /; } access_log /usr/local/webserver/nginx/logs/nginx_access.log; } }
改一下 you_server_ip便可。