由于项目中用到了大量的文件上传和删除,考虑到安全的因素,所以整体的思路是使用FTP从主服务器把文件资源上传到文件服务器上。

FTP上传到服务器的代码如下(简单附加一下,具体的网上很多)

  public static void 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;
const int BufferSize = 2048;
byte[] content=new byte[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来做图片代理。

安装Nginx,我在安装的过程中遇到了一个小问题(Windows  找不到文件Nginx...),这个错误是因为位置没有定位正确,我使用的nginx-1.9.0版本,我只是定位到安装文件的上级目录,所以出现了这个错误,如果你出现了类似的错误,最简单粗暴的方式就是找到nginx安装程序,地址栏的地址直接粘出来就行。

另一个问题就是80端口被占用的情况,当我们配置完IIS后,默认端口被IIS的默认网站占用,这时候,你只需把IIS的默认网站端口修改一下即可。

安装成功后任务管理器中会有二个进程

接下来在地址栏中输入loaclhost,你就会发现会出现

Welcome to nginx!

Nginx安装成功后,修改nginx.conf文件。

 location / {
root html;
index index.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.这时候就可以访问图片了。

由于我使用的本地的所以我的地址为http://192.168.1.218/Image/2015-05-17/2015-05-17.jpg,

如果要发布到远程服务器上,需要绑定域名时怎么办。这时候只需在server内部配置一下即可

server
{
listen 8080; server_name your_server_ip; location /
{
root /; } access_log /usr/local/webserver/nginx/logs/nginx_access.log; }
}

  改一下 you_server_ip即可。

Windows Server2012上使用Nginx做文件服务器的更多相关文章

  1. 在Linux和Windows系统上安装Nginx服务器的教程

    在Linux和Windows系统上安装Nginx服务器的教程  1.在CentOS系统上安装Nginx 在 CentOS6 版本的 EPEL 源中,已经加入了 nginx 的 rpm 包,不过此 RP ...

  2. 安装SQL Server 2012过程中出现“启用windows功能NetFx3时出错”(错误原因、详细分析及解决方法)以及在Windows Server2012上安装.NET Framework 3.5的详细分析及安装过程

           问题:在服务器(操作系统为Windows server 2012)上安装SQL Server 2012的过程中,安装停留在下图所示的界面上,显示”正在启用操作系统功能NetFx3”随后出 ...

  3. windows server2012 搭建.netcore+nginx+nssm运行环境

    1.linux+.netcore+sqlserver的坑 linux不支持访问sqlserver2008及以下的版本(由于System.Data.SqlClient.dll的限制.windows上面访 ...

  4. windows平台下利用Nginx做负载均衡

    1.下载nginx(http://nginx.org/en/download.html)安装包,解压,并使用cmd命令转到nginx.exe所在的目录 2.执行cmd命令start nginx启动ng ...

  5. ubuntu 上采用nginx做rtmp 直播 服务器

    首先安装必要的依赖库   sudo apt-get install autoconf automake sudo apt-get install libpcre3 libpcre3-dev   安装 ...

  6. wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败

    继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...

  7. 在Linux上使用Nginx为Solr集群做负载均衡

    在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...

  8. 在windows上安装nginx

    在windows上安装nginx   最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下.   首先需要到nginx的官网上下载最新版的nginx:http://n ...

  9. 在windows上安装nginx并注册

    在windows上安装nginx并注册 一.前言   最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下. 二.在windows下面安装   首先需要到nginx的 ...

随机推荐

  1. c# winform 在一个窗体中使用另一个窗体中TextBox控件的值——解决办法

    [前提]一个winform应用程序项目中,窗体B,需要使用 窗体A 中一个TextBox控件的值,进行计算等操作. [解决方案] 1.在窗体A中定义:public static double a;// ...

  2. TCMalloc小记

    周末抽空看了一下tcmalloc,了解了个大概.下面记录一下. 一. 原理 tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配.释放内存造成的性能损耗,并 ...

  3. Java Tips and Best practices to avoid NullPointerException

    A NullPointerException in Java application is best way to solve it and that is also key to write rob ...

  4. 使用纯css代码实现div的“回”字型“叠放”效果

    正如大家所知道的那样,div是一个块级元素,也是网页编写过程中使用频率最高的一个元素,通过不同的样式控制可以实现一些最常见的页面效果,当然也可以实现一些比较复杂的页面效果,这里就展示一个本人面试过程中 ...

  5. ESLint--定制你的代码规则

    简介 ESLint是一个开源的项目,由Nicholas C. Zakas(<JavaScript高级程序设计>作者)于2013年六月创建.它的目标是为JavaScript提供一个完全可配置 ...

  6. Struts入门(二) 配置文件的讲解

    上一章我们演示了Struts项目的搭建  可以看到里面有几个重要的配置文件  下面我们来说明一下这3个配置文件 1.web.xml 2.strtus.xml 3.struts.properties 1 ...

  7. android 轮播图

    轮播图是很常用的一个效果 核心功能已经实现 没有什么特殊需求 自己没事研究的 所以封装的不太好 一些地方还比较糙 为想要研究轮播图的同学提供个参考 目前测试图片为mipmap中的图片 没有写从网络加载 ...

  8. 【LeetCode】23. Merge k Sorted Lists

    合并k个已合并链表. 思路:先把链表两两合并,直到合并至只有一个链表 /** * Definition for singly-linked list. * struct ListNode { * in ...

  9. 深入理解Hadoop集群和网络

    导读:云计算和Hadoop中网络是讨论得相对比较少的领域.本文原文由Dell企业技术专家Brad Hedlund撰写,他曾在思科工作多年,专长是数据中心.云网络等.文章素材基于作者自己的研究.实验和C ...

  10. 一点公益二码公益开发模式系统源码App

    写这篇文章,是因为最近看到的一个著名的开源项目在内部使用时的各种问题,不得不说,很多的开源的东西思想是不错的,但离真正工程化都有不小的距离,所以没什么商业公司采用的开源产品如果要引入的话一定要慎重,通 ...