Я пытаюсь загрузить одно jpeg-изображение в PHP-скрипт. Это мое консольное приложение program.cs
:
class Program
{
static void Main(string[] args)
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
string result = UploadHandler.Post(
"http://localhost/upload_test",
"frame.jpg"
);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine("Result : {0}", result);
Console.WriteLine("File uploaded in : {0}", elapsedTime);
Console.ReadKey();
}
}
Это мой класс UploadHandler
:
class UploadHandler
{
public static string Post(string serverUrl, string filePath)
{
string result = "";
using (WebClient client = new WebClient())
{
byte[] response = client.UploadValues(serverUrl, new NameValueCollection()
{
{ "frameData", ToBase64(filePath) }
});
result = Encoding.Default.GetString(response);
}
return result;
}
private static string ToBase64(string filePath)
{
return Convert.ToBase64String(
File.ReadAllBytes(filePath)
);
}
}
и это мой php-скрипт, который получает загрузку:
<?php
if (count($_POST) && isset($_POST['frameData']))
{
file_put_contents('frame.jpg', base64_decode($_POST['frameData']));
exit("OK");
}
else
{
print_r($_POST);
exit("INVALID REQUEST");
}
И это ответ, который я получаю:
Любая идея, почему это может быть? Похоже, что приложение С# не делает запрос HTTP POST.
Пытаться:
client.UploadValues(serverUrl, "POST", new NameValueCollection()
{
{ "frameData", ToBase64(filePath) }
});
EDIT: вы должны отлаживать такие проблемы с помощью Fiddler: http://www.telerik.com/fiddler
Сначала убедитесь, что ваше приложение С# отправляет ожидаемый запрос, проверив его в Fiddler, а затем вы можете убедиться, что ваше приложение PHP работает правильно на другом конце.
Прямо сейчас вы не получите очень далеко, потому что неясно, где проблема.
INVALID REQUEST
назад.
Wireshark
для мониторинга всех HTTP-запросов и провел тест, и я вообще не принимал никаких HTTP-запросов ... что кажется странным, потому что я получаю ответ обратно.