HttpRequest.Fichiers est vide lors de la publication de fichiers par le biais de HttpClient
Côté serveur:
public HttpResponseMessage Post([FromUri]string machineName)
{
HttpResponseMessage result = null;
var httpRequest = HttpContext.Current.Request;
if (httpRequest.Files.Count > 0 && !String.IsNullOrEmpty(machineName))
...
Côté Client:
public static void PostFile(string url, string filePath)
{
if (String.IsNullOrWhiteSpace(url) || String.IsNullOrWhiteSpace(filePath))
throw new ArgumentNullException();
if (!File.Exists(filePath))
throw new FileNotFoundException();
using (var handler = new HttpClientHandler { Credentials= new NetworkCredential(AppData.UserName, AppData.Password, AppCore.Domain) })
using (var client = new HttpClient(handler))
using (var content = new MultipartFormDataContent())
using (var ms = new MemoryStream(File.ReadAllBytes(filePath)))
{
var fileContent = new StreamContent(ms);
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = Path.GetFileName(filePath)
};
content.Add(fileContent);
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
var result = client.PostAsync(url, content).Result;
result.EnsureSuccessStatusCode();
}
}
Côté serveur, la httpRequest.Les fichiers de la collection est toujours vide. Mais les en-têtes (content-length etc...) sont à droite.
OriginalL'auteur Coffka | 2013-03-21
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas utiliser HttpContext pour récupérer les fichiers dans ASP.NET l'API Web. Jetez un oeil à cet exemple écrit par Microsoft (http://code.msdn.microsoft.com/ASPNET-Web-API-File-Upload-a8c0fb0d/sourcecode?fileId=67087&pathId=565875642).
HttpContext
quandvar postedFile = HttpContext.Current.Request.Files[0];
donne simplement la posté fichier? C'est que tout de suite de l'avant.val est toujours vide...
OriginalL'auteur Pablo Cibraro
Essayez cette méthode :
Thomas : j'ai aussi poser la même question et j'ai modifié la réponse et je la coller ici. stackoverflow.com/questions/15087028/...
OriginalL'auteur Popeye
Au cas où quelqu'un d'autre a le même problème: assurez-vous que votre limite est valide, par exemple ne pas ce faire:
Cela n'a pas pour moi en raison d'une défaillance de limite de caractères, peut-être que le "/" séparateur de date. Au moins cela a résolu mon problème, lors de l'accès
Context.Request.Files
dans unNancy
contrôleur (qui était toujours vide).Mieux utiliser quelque chose comme
DateTime.Now.Ticks.ToString("x")
à la place.OriginalL'auteur Dunc
Tout semble bon dans votre code, sauf le type de contenu qui doit être
multipart/form-data
. S'il vous plaît essayez de changer votre code pour refléter le bon type de contenu:Vous pourriez vouloir consulter cette post pour expliquer pourquoi le réglage du type de contenu à
application/octet-stream
n'a pas de sens du côté client.OriginalL'auteur RBT