//客戶端發送文件<br data-filtered="filtered">static void Main(string[] args)
{
Upload_Request( "http://192.168.0.4:8099/WebService/AndroidProcessRequest.aspx" , @"E:\vid20140213160351.zip" , @"E:\vid20140213160351.zip" );
}
private static int Upload_Request( string address, string fileNamePath, string saveName)
{
int returnValue = 0;
// 要上傳的文件
FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.ReadWrite,FileShare.ReadWrite);
BinaryReader r = new BinaryReader(fs);
//時間戳
string strBoundary = "----------" + DateTime.Now.Ticks.ToString( "x" );
byte [] boundaryBytes = Encoding.ASCII.GetBytes( "\r\n--" + strBoundary + "\r\n" );
//請求頭部信息
StringBuilder sb = new StringBuilder();
sb.Append( "--" );
sb.Append(strBoundary);
sb.Append( "\r\n" );
sb.Append( "Content-Disposition: form-data; name=\"" );
sb.Append( "file" );
sb.Append( "\"; filename=\"" );
sb.Append(saveName);
sb.Append( "\"" );
sb.Append( "\r\n" );
sb.Append( "Content-Type: " );
sb.Append( "application/octet-stream" );
sb.Append( "\r\n" );
sb.Append( "\r\n" );
string strPostHeader = sb.ToString();
byte [] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);
// 根據uri創建HttpWebRequest對象
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create( new Uri(address));
httpReq.Method = "POST" ;
//對發送的數據不使用緩存
httpReq.AllowWriteStreamBuffering = false ;
//設置獲得響應的超時時間(300秒)
httpReq.Timeout = 300000;
httpReq.ContentType = "multipart/form-data; boundary=" + strBoundary;
long length = fs.Length + postHeaderBytes.Length + boundaryBytes.Length;
long fileLength = fs.Length;
httpReq.ContentLength = length;
try
{
//每次上傳4k
int bufferLength = 4096;
byte [] buffer = new byte [bufferLength];
//已上傳的字節數
long offset = 0;
//開始上傳時間
DateTime startTime = DateTime.Now;
int size = r.Read(buffer, 0, bufferLength);
Stream postStream = httpReq.GetRequestStream();
//發送請求頭部消息
postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
while (size > 0)
{
postStream.Write(buffer, 0, size);
size = r.Read(buffer, 0, bufferLength);
}
//添加尾部的時間戳
postStream.Write(boundaryBytes, 0, boundaryBytes.Length);
postStream.Close();
//獲取服務器端的響應
WebResponse webRespon = httpReq.GetResponse();
Stream s = webRespon.GetResponseStream();
StreamReader sr = new StreamReader(s);
//讀取服務器端返回的消息
String sReturnString = sr.ReadLine();
s.Close();
sr.Close();
if (sReturnString == "Success" )
{
returnValue = 1;
}
else if (sReturnString == "Error" )
{
returnValue = 0;
}
}
catch (Exception ex)
{
returnValue = 0;
}
finally
{
fs.Close();
r.Close();
}
return returnValue;
}
|