загрузка изображения с помощью C # Http post - PullRequest
0 голосов
/ 05 января 2019

Эта программа Python загружает изображение в URL. Мне нужно то же самое, но в C #. Как я могу это сделать? Я использую win-формы.

Программа:

fin =  open(file_path, 'rb')
files = {'file': fin}

try:<br>
    r = requests.post(url, files=files, verify = False)
finally:
    fin.close()

json_data = json.loads(r.text)

1 Ответ

0 голосов
/ 05 января 2019

Есть много примеров, но попробуйте этот, он может работать для вас.

private byte[] GetFileByteArray(string filename)
  {
   FileStream oFileStream = new FileStream(filename, FileMode.Open, FileAccess.Read);

   // Create a byte array of file size.
   byte[] FileByteArrayData = new byte[oFileStream.Length];

   //Read file in bytes from stream into the byte array
   oFileStream.Read(FileByteArrayData, 0, System.Convert.ToInt32(oFileStream.Length));

   //Close the File Stream
   oFileStream.Close();

   return FileByteArrayData; //return the byte data
  }

// Этот метод возвращает массив байтов файла, затем вам нужно вызвать метод UploadVideoFile.

public string UploadVideoFile(string URL, byte[] VideoFileData)
    {
      string Response = null;
      HttpWebRequest WebReq = null;
      HttpWebResponse WebRes = null;
      StreamReader StreamResponseReader = null;
      Stream requestStream = null;
      try
      {
        WebReq = (HttpWebRequest)WebRequest.Create(URL);
        WebReq.Method = "POST";
        WebReq.Accept = "*/*";
        WebReq.Timeout = 50000;
        WebReq.KeepAlive = false;
        WebReq.AllowAutoRedirect = false;
        WebReq.AllowWriteStreamBuffering = true;
        WebReq.ContentType = "binary/octet-stream";
        WebReq.ContentLength = VideoFileData.Length;


        requestStream = WebReq.GetRequestStream();
        requestStream.Write(VideoFileData, 0, VideoFileData.Length);

        requestStream.Close();

        WebRes = (HttpWebResponse)WebReq.GetResponse();
        StreamResponseReader = new StreamReader(WebRes.GetResponseStream(), Encoding.UTF8);
        Response = StreamResponseReader.ReadToEnd();
      }
      catch
      {
        throw;
      }
      finally
      {
        if (WebReq != null)
        {
          WebReq.Abort();
          WebReq = null;
        }
        if (WebRes != null)
        {
          WebRes.Close();
          WebRes = null;
        }
        if (StreamResponseReader != null)
        {
          StreamResponseReader.Close();
          StreamResponseReader = null;
        }
        if (requestStream != null)
        {
          requestStream = null;
        }
      }


      return Response;
    }

Используйте эту ссылку для справки: https://social.msdn.microsoft.com/Forums/en-US/9be81392-71b6-4424-aed4-0627f041ba2e/how-to-upload-a-image-file-via-http-request-using-cnet?forum=vssmartdevicesvbcs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...