C# 做服务端接口,接收文件流通过SFTP上传至服务器
本示例支持多个文件上传同时上传,并同时上传多台服务器
SFTP需要引入Renci.SshNet包
接口功能:第三方调用此接口上传vox文件,接口接收传过来的文件流,直接将接收的文件流通过SFTP的方式上传至Linux服务器
可用Postman进行自测
Body选择form-data方式
Content-Type:multipart/form-data
接口的入口,逻辑处理在upLoadFile()中:
public class CCase
{
/// <summary>
/// 预约服务
/// </summary>
/// <param name="stream"></param>
[WebInvoke(UriTemplate = "upLoadFile", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
//public SampleItem Create(SampleItem instance)
public void upLoadFile(Stream stream)
{
string ip = System.Web.HttpContext.Current.Request.UserHostAddress.ToString();
string rval = "";
Encoding gbEncoding = Encoding.GetEncoding("utf-8");
try
{
CTrace.Write(TraceLevel.Info, "upLoadFile.Receive.....{0}", ip);
//StreamReader sr = new StreamReader(stream, gbEncoding);
//string s = sr.ReadToEnd();
//sr.Dispose();
CTrace.Write(TraceLevel.Info, "upLoadFile.Readstr:{0}", rval);
rval = CsDataHandler.upLoadFile(stream);
}
catch (Exception err)
{
CTrace.Write(TraceLevel.Debug, "upLoadFile.Read.Err::{0}", err.ToString());
return;
}
try
{
CTrace.Write(TraceLevel.Info, "upLoadFile.Write:{0}", rval);
HttpContext.Current.Response.ContentEncoding = gbEncoding;
HttpContext.Current.Response.Write(rval);
}
catch