Невозможно передать изображение в HTTP POST в веб-запросе HTTP в ASP.NET - PullRequest
0 голосов
/ 02 июля 2011

У меня проблемы с преобразованием изображения в байты и сохранением его в базе данных.

Вот описание,

У меня есть изображение, которое будет отправлено с удаленного устройства на веб-сервер с помощью HTTP POST.

так что я делаю, я прошу их прислать мне изображение.

Так как данные отправляются в POST, я предполагаю, что они отправят мне байты, преобразовав байты в строку, используя

byte [] img = FileUpload1.FileBytes; Кодировка enc = Encoding.ASCII; string img = enc.GetString (img);

Затем они создают WebRequest с использованием HTTPWebRequest и добавляют это изображение в HTTP POST.

Весь код для подачи запроса ---

    WebRequest request = WebRequest.Create(url);
    request.Method = "POST";


    //Create the POST Data

    FileUpload img = (FileUpload)imgUpload;
    Byte[] imgByte = null;
    if (img.HasFile && img.PostedFile != null)
    {
        imgByte = imgUpload.FileBytes;
    }
    string imgPh = null;
    Encoding enc = Encoding.ASCII;
    if (imgByte != null)
    {
        imgPh = enc.GetString(imgByte);
    }
    string postData = "sid=8062BD53EB4552AD6D0FBB7E5DC5B7AF&status=Y&uid=123456789012&fname=Dinesh Singh&lname=Malik&ftname=Balwan&yrbirth=1988&gender=Male&address1=Address1&address2=Address2&address3=Address3&address4=Address4&imagePh=" + imgPh;


    byte[] post = Encoding.UTF8.GetBytes(postData);


    //Set the Content Type
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = post.Length;

    Stream reqdataStream = request.GetRequestStream();
    // Write the data to the request stream.
    reqdataStream.Write(post, 0, post.Length);

    reqdataStream.Close();

    // If required by the server, set the credentials.
    request.Credentials = CredentialCache.DefaultCredentials;
    WebResponse response = null;
    try
    {
        // Get the response.
        response = request.GetResponse();

    }
    catch (Exception ex)
    {
        Response.Write("Error Occured.");
    }

На странице, на которую делается запрос, я снова получаю это изображение в байтах, используя

    Encoding enc = Encoding.ASCII;

    byte[] imagePhoto = enc.GetBytes(postData["imageph"]);

Отсюда я сохраняю его в своей базе данных

Но когда я получаю изображение с помощью обработчика, оно не показывает изображение.


Проблема заключается в преобразовании изображения из байта [] в строку, а затем преобразовании строки в байт [] на веб-сервере. (Потому что, когда я сохраняю изображение напрямую без этого преобразования, используя TestPage на сервере, оно показывает изображение.)

Так что же я делаю не так в этом?

Также есть ли способ в приведенном выше коде получить данные HTTP Post, полученные веб-сервером (получить заголовки HTTP). Я хочу получить полученные данные, чтобы отправить их обратно в Other Development для разработки запроса на устройстве в том же формате, в котором я получаю URL-адрес веб-запроса HTTP

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 04 июля 2011

Хорошо, я, наконец, понял это.

То, что я сделал, было -

Изображение -> byte [] -> Convert.ToBase64String -> Добавить данные строки к запросу на отправку

На сервере -

Получить данные записи -> Convert.FromBase64String -> byte [] -> Вставить в базу данных

Прекрасно работает ...:)

Спасибо

...