向即含有文字又含有文件的表單提交文件時。http的格式非常重要,錯一點都有可能發送不出去,這種錯誤都是在字符串中很不容易被發現。當 上傳文件時,首先要向服務器發送一個包含文件名地格式之類的頭信息。格式爲:
StringBuilder sb = new StringBuilder();
sb.Append("--");
sb.Append(strBoundary);
sb.Append(" ");
sb.Append("Content-Disposition:form-data;name=");
sb.Append("FileData");
sb.Append(";filename=");
sb.Append(filename);
//sb.Append(""");
sb.Append(" ");
sb.Append("Content-Type:");
sb.Append("application/octet-stream");
sb.Append(" ");
sb.Append(" ");
其中頭部的“--”非常重要 ,代表二進制流的開始。
然後再向服務器發送一個帶有文件內容的請求體,以下面的格式開始
Content-Type:multipart/form-data; boundary = --------7db15414291cce;
boudary 後面是一個字符串,可通過datetime.now.ticks.tostring("x");獲取
在請求的最後,是"--" + boudary + "--",另外注意,在html協議中用" "。結束邊界符需要和表單項內容保持兩個空行的距離(兩個),否則如果結束邊界符前面是一個文件的二進制流,接收方將無法獲取該文件,文件的二進制流上下文需要保持兩個空行的距離。