第一种:通过FTP来上传文件首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了。第二种:通过WebClient来上传文件如:现在的开发的web应用程序的虚拟目录是WebAA,另一个应用程序的虚拟目录是WebBB,现在要从WebAA向WebBB下的一个UpLoadFiles文件夹下保存图片第三种:通过Web Service来上传文件 //上传文件至WebService所在服务器的方法,这里为了操作方法,文件都保存在UpDownFile服务所在文件夹下的File目录中
[WebMethod]
public bool Up(byte[] data, string filename)
{
try
{
FileStream fs = File.Create(Server.MapPath("File/") + filename);
fs.Write(data, 0, data.Length);
fs.Close();
return true;
}
catch
{
return false;
}
}
想知道上面几种方式的优劣,或者谁那边有好的高性能文件上传的源码提供,不胜感激
[WebMethod]
public bool Up(byte[] data, string filename)
{
try
{
FileStream fs = File.Create(Server.MapPath("File/") + filename);
fs.Write(data, 0, data.Length);
fs.Close();
return true;
}
catch
{
return false;
}
}
想知道上面几种方式的优劣,或者谁那边有好的高性能文件上传的源码提供,不胜感激
var data = new WebClient().UploadData("http://localhost:2171/TestWebClientUpload2.ashx?filename" + urlencodeFileName +"&position"+ position, data);
那么你的服务器端直接从 Request.InputStream 中读取 data,然后保存到相应文件的 position 偏移位置。代码跟上传一个字符串类似。
就我自己的经验,1,3都可行,ftp服务架设我用filezilla server比较多一些。ftp可以以二进制字节形式传输,webservice是http传输,这种写法一般也是把字节数组base64编码后再传,体积略大于原始字节数组的。大的文件,传输效率上,是低于ftp的。
http 消息体是二进制数据。假设你把二进制刻意地当作string来传送,才需要base64编码。普通的 http post 传送数据是不需要考虑编码的,所 post data 本身就是byte [ ]。
还可以用html5的 Web Socket api传输文件,不过要浏览器支持,直接用js来传输文件。
新的服务接口目前一般都是基于webapi的rest接口ftp,sftp之类的,除非有密码安全之类的限制,否则一般不需要ftp所以,要看你的场景究竟如何,才能判断究竟该采用哪种方案