2009-10-04 6 views
0

Je dois télécharger un fichier sur mon serveur depuis un programme C#. Le problème est, je dois également POST deux chaînes en même temps. Jusqu'à présent, j'ai:C# Comment télécharger un fichier sur un serveur PHP?

  HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create("http://localhost/test.php");    
      ASCIIEncoding encoding = new ASCIIEncoding(); 
      string postData = "&name=Test"; 
      postData += "&[email protected]"; 
      postData += "&file=file.txt"; 

      byte[] data = encoding.GetBytes(postData); 

      HttpWReq.Method = "POST";  
      HttpWReq.ContentType = "application/x-www-form-urlencoded"; 
      HttpWReq.ContentLength = data.Length;  
      Stream newStream = HttpWReq.GetRequestStream(); 


      newStream.Write(data, 0, data.Length); 
      newStream.Close(); 

Voici le HTML et PHP:

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$target_path = "uploads/"; 
$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 
echo (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path) ? "Success!" : "Failed"); 
?> 
<form enctype="multipart/form-data" action="test.php" method="POST"> 
Name : <input type="text" name="name"><br /> 
Email : <input type="text" name="email"><br /> 
File : <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Being Upload" /> 
</form> 

Je ne sais pas où ajouter le champ de fichier si: \ Toute aide serait appréciée!

+0

Vérifiez la réponse ici http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data –

Répondre

0

Essayez peut-être d'ajouter FileUpload Class from MSDN ou utilisez CURL dans votre projet.

+0

Eh bien, de toute façon, je ne sais pas comment les télécharger dans le même forme. Par exemple, si j'utilise la méthode FileUpload, il télécharge le fichier, puis il soumet le reste d'entre eux forment ... Je veux tout faire en même temps ... Ha, je ne suis pas sûr si cela a du sens : \ –

1

Notez que votre code HTML dans l'élément fichier PHP a correctement enctype="multipart/form-data" dans le <form>, lorsque votre soumission de formulaire comprend un fichier télécharger doit utiliser le type de contenu multipart/form-data ou un autre type multipart MIME, mais dans votre code C# vous définissez la requête HTTP ContentType à application/x-www-form-urlencoded. Ce type de contenu ne prend pas en charge les soumissions de fichiers. Le fichier téléchargé doit être une partie distincte du message MIME envoyé par le formulaire.

Je ne peux pas fournir un exemple de code parce que je ne connais pas C# ou .NET en général, mais je crois qu'il devrait y avoir une classe pour construire de tels messages, il pourrait s'agir de quelque chose apparemment lié à l'e-mail manipulation.

Questions connexes