Tenho pesquisado e lido sobre isso e não consegui encontrar nada realmente útil.
Estou escrevendo um pequeno aplicativo C # win que permite ao usuário enviar arquivos para um servidor web, não por FTP, mas por HTTP usando POST. Pense nisso como um formulário da web, mas em execução em um aplicativo do Windows.
Eu tenho meu objeto HttpWebRequest criado usando algo assim
HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest
e também definir as Method
, ContentType
e ContentLength
propriedades. Mas isso é o mais longe que posso ir.
Este é o meu código:
HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest;
req.KeepAlive = false;
req.Method = "POST";
req.Credentials = new NetworkCredential(user.UserName, user.UserPassword);
req.PreAuthenticate = true;
req.ContentType = file.ContentType;
req.ContentLength = file.Length;
HttpWebResponse response = null;
try
{
response = req.GetResponse() as HttpWebResponse;
}
catch (Exception e)
{
}
Portanto, a minha pergunta é basicamente como posso enviar um arquivo (arquivo de texto, imagem, áudio, etc) com C # via HTTP POST.
Obrigado!
c#
http
post
system.net
gabitoju
fonte
fonte
Respostas:
Usando o .NET 4.5 (ou .NET 4.0 adicionando o pacote Microsoft.Net.Http do NuGet), há uma maneira mais fácil de simular solicitações de formulário. Aqui está um exemplo:
fonte
form.Add
é opcional e útil apenas para arquivos.Para enviar apenas o arquivo bruto :
Se você quiser emular um formulário de navegador com um
<input type="file"/>
, isso é mais difícil. Veja esta resposta para uma resposta multipart / form-data.fonte
http://www.testproject.com/SavedFiles
- observe o//
Para mim,
client.UploadFile
ainda envolveu o conteúdo em uma solicitação multiparte, então tive que fazer assim:fonte
Eu tive o mesmo problema e este código a seguir respondeu perfeitamente a este problema:
fonte
Você precisa gravar seu arquivo no fluxo de solicitação:
fonte
Para postar arquivos a partir de matrizes de bytes:
fonte
fonte
Usando o .NET 4.5 tentando realizar o upload do arquivo POST. Tentei a maioria dos métodos acima, mas sem sucesso. Encontre a solução aqui https://www.c-sharpcorner.com/article/upload-any-file-using-http-post-multipart-form-data
Mas eu não estou interessado, pois não entendo por que ainda precisamos lidar com a programação de baixo nível nesses usos comuns (deve ser tratado muito bem pelo framework)
fonte