string URLAuth =
"https://xxx.xxx.xxx.xxx/Authenticate.aspx";
WebClient webClient =
new
WebClient();
NameValueCollection formData =
new
NameValueCollection();
formData[
"Username"] =
"myUser";
formData[
"Password"] =
"myPassword";
byte[] responseBytes = webClient.UploadValues(URLAuth,
"POST", formData);
string resultAuthTicket =
Encoding.UTF8.GetString(responseBytes);
webClient.Dispose();
string URL =
"http://xxx.xxx.xxx.xxx/Upload.aspx?Method=file";
string boundary =
"----------------------------" +
DateTime.Now.Ticks.ToString(
"x");
System.Net.
WebRequest webRequest = System.Net.
WebRequest.Create(URL);
webRequest.Method =
"POST";
webRequest.ContentType =
"multipart/form-data; boundary=" + boundary;
string FilePath =
"C:\\test.csv";
formData.Clear();
formData[
"ticket"] = resultAuthTicket;
formData[
"ReplaceAll"] =
"false";
Stream postDataStream = GetPostStream(FilePath, formData, boundary);
webRequest.ContentLength = postDataStream.Length;
Stream reqStream = webRequest.GetRequestStream();
postDataStream.Position = 0;
byte[] buffer =
new
byte[1024];
int bytesRead = 0;
while ((bytesRead = postDataStream.Read(buffer, 0, buffer.Length)) != 0)
{
reqStream.Write(buffer, 0, bytesRead);
}
postDataStream.Close();
reqStream.Close();
StreamReader sr =
new
StreamReader(webRequest.GetResponse().GetResponseStream());
string Result = sr.ReadToEnd();
Stream postDataStream =
new System.IO.
MemoryStream();
//adding form datastring formDataHeaderTemplate =
Environment.NewLine +
"--" + boundary +
Environment.NewLine +
"Content-Disposition: form-data; name=\"{0}-:special:1:-;" + Environment.NewLine + Environment .NewLine + "{1}";
foreach (
string key
in formData.Keys)
{
byte[] formItemBytes = System.Text.
Encoding.UTF8.GetBytes(
string.Format(formDataHeaderTemplate,
key, formData[key]));
postDataStream.Write(formItemBytes, 0, formItemBytes.Length);
}
//adding file dataFileInfo fileInfo =
new
FileInfo(filePath);
string fileHeaderTemplate =
Environment.NewLine +
"--" + boundary +
Environment.NewLine +
"Content-Disposition: form-data; name=-:special:1:-{0}-:special:1:-; filename=-:special:1:-{1}-:special:1:-" +
Environment.NewLine + "Content-Type: application/vnd.ms-excel" + Environment.NewLine + Environment.NewLine;
byte[] fileHeaderBytes = System.Text.
Encoding.UTF8.GetBytes(
string.Format(fileHeaderTemplate,
"UploadCSVFile", fileInfo.FullName));
postDataStream.Write(fileHeaderBytes, 0, fileHeaderBytes.Length);
FileStream fileStream = fileInfo.OpenRead();
byte[] buffer =
new byte[1024];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
postDataStream.Write(buffer, 0, bytesRead);
}
fileStream.Close();
byte[] endBoundaryBytes = System.Text.
Encoding.UTF8.GetBytes(
"--" + boundary +
"--");
postDataStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
return postDataStream;