что такое php-код для получения файла, отправленного с помощью Windows Phone 8 Restsharp

вот код 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;
        }
    }

person Kussai    schedule 13.07.2014    source источник


Ответы (1)


Для стороны PHP вы можете использовать следующий код (это будет содержимое page.php), чтобы проверить, что получил сервер:

<?php

echo '<pre>';

// show details of file(s) sent to page.
var_dump($_FILES);

// show details of parameters POSTed to page.
var_dump($_POST);

echo '</pre>';

?>

Это позволяет вам проверить, что что-то произошло со стороны C#.

Если вы не можете просмотреть вывод сервера напрямую, вы можете вывести его в файл (details.txt) в той же папке на сервере, что и page.php, используя вместо этого этот код:

<?php

file_put_contents('details.txt', print_r($_FILES, true) . "\n" . print_r($_POST, true));

?>

Вы должны прочитать $_FILES superglobal и обработка загрузки файлов в PHP.

person timclutton    schedule 13.07.2014