Мне нужно загрузить файл PDF и номер телефона в службу, которая отправит факс.
Форма, которая работает (с веб-страницы) выглядит следующим образом:
<form action="send.php" method="post" enctype="multipart/form-data">
<input type="file" name="pdf" id="pdf" />
<input type="text" name="phonenumber" id="phonenumber" />
<input type="submit" name="Submit" />
</form>
Проблема в том, что мне нужно сделать это из приложения Windows, написанного на C #.
Как я могу загрузить файл и строку в одном сообщении?
Я использую класс WebClient
.
Я попытался открыть файл, прочитать его байты и выложить все это так:
string content = "phonenumber="+request.PhoneNumber+"&pdf=";
WebClient c = new WebClient();
c.Headers.Add("Content-Type", "multipart/form-data");
c.Headers.Add("Cache-Control", "no-cache");
c.Headers.Add("Pragma", "no-cache");
byte[] bret = null;
byte[] p1 = Encoding.ASCII.GetBytes(content);
byte[] p2 = null;
using (StreamReader sr = new StreamReader(request.PdfPath))
{
using (BinaryReader br = new BinaryReader(sr.BaseStream))
{
p2 = br.ReadBytes((int)sr.BaseStream.Length);
}
}
byte[] all = new byte[p1.Length + p2.Length];
Array.Copy(p1, 0, all, 0, p1.Length);
Array.Copy(p2, 0, all, p1.Length, p2.Length);
bret = c.UploadData(url, "POST", all);
Это не работает.
У меня нет журналов сервера или чего-либо подобного, чтобы помочь мне отладить его.
Я что-то упускаю из класса WebClient
? Есть ли другой способ объединить UploadFile
и UploadData
для публикации обоих значений, как на веб-странице (которая работает)?