вот код restsharp, пожалуйста, помогите мне с php-кодом, который извлекает отправленный файл, если он отправлен в первую очередь, я действительно не знаю. и, пожалуйста, не могли бы вы сказать, правильный ли мой код С# и действительно ли он отправляет файл или нет. код успешно отправляет параметр, но для файла, который я не знаю, я не могу сказать, пока у меня не будет надежного php-кода, который может обработать запрос. я взял код из http://nediml.wordpress.com/2012/05/10/uploading-files-to-remote-server-with-multiple-parameters/ С уважением и благодарностью
private void Button_Click(object sender, RoutedEventArgs e)
{
CameraCaptureTask cameraCapture = new CameraCaptureTask();
cameraCapture.Completed += cameraCapture_Completed;
cameraCapture.Show();
}
private void cameraCapture_Completed(object sender, PhotoResult e)
{
if (e.TaskResult != TaskResult.OK)
return;
string userId = tb.Text;
//preparing RestRequest by adding server url, parameteres and files...
RestRequest request = new RestRequest("http://server/page.php", Method.POST);
request.AddParameter("id", userId);
request.AddFile("image", ReadToEnd(e.ChosenPhoto), "photo.jpg", "image/pjpeg");
//calling server with restClient
RestClient restClient = new RestClient();
restClient.ExecuteAsync(request, (response) =>
{
if (response.StatusCode == HttpStatusCode.OK)
{
//upload successfull
MessageBox.Show("Upload completed succesfully...\n" + response.Content);
}
else
{
//error ocured during upload
MessageBox.Show(response.StatusCode + "\n" + response.StatusDescription);
}
});
}
public byte[] ReadToEnd(System.IO.Stream stream)
{
long originalPosition = stream.Position;
stream.Position = 0;
try
{
byte[] readBuffer = new byte[4096];
int totalBytesRead = 0;
int bytesRead;
while ((bytesRead = stream.Read(readBuffer, totalBytesRead, readBuffer.Length - totalBytesRead)) > 0)
{
totalBytesRead += bytesRead;
if (totalBytesRead == readBuffer.Length)
{
int nextByte = stream.ReadByte();
if (nextByte != -1)
{
byte[] temp = new byte[readBuffer.Length * 2];
Buffer.BlockCopy(readBuffer, 0, temp, 0, readBuffer.Length);
Buffer.SetByte(temp, totalBytesRead, (byte)nextByte);
readBuffer = temp;
totalBytesRead++;
}
}
}
byte[] buffer = readBuffer;
if (readBuffer.Length != totalBytesRead)
{
buffer = new byte[totalBytesRead];
Buffer.BlockCopy(readBuffer, 0, buffer, 0, totalBytesRead);
}
return buffer;
}
finally
{
stream.Position = originalPosition;
}
}