2009-10-04 4 views
0

Мне нужно загрузить файл на мой веб-сервер из программы на C#. Проблема в том, что мне нужно также POST две строки одновременно. До сих пор у меня есть:C# Как загрузить файл на 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(); 

Вот HTML и 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> 

Я не знаю, где, чтобы добавить поле файла, хотя: \ Любая помощь будет оценен по достоинству!

+0

Проверьте ответ здесь http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data –

ответ

0

Возможно, попробуйте добавить FileUpload Class from MSDN или используйте CURL в своем проекте.

+0

Ну, в любом случае, я не знаю, как загрузить их в такой же вид. Например, если я использую метод FileUpload, он загружает файл, затем он подает остальную часть формы ... Я хочу сделать все это одновременно ... Ха, я не уверен, что это имеет смысл : \ – 2009-10-04 02:58:34

1

Обратите внимание, что ваш HTML фрагмент кода в файле PHP корректно имеет enctype="multipart/form-data" в <form> элементе, когда ваша заявка форма включает в себя загрузить файл, он должен использовать многослойную/форм-данных тип содержимого или другой многослойную MIME типа, но в коде C# вы задаете HTTP-запрос ContentType - application/x-www-form-urlencoded. Этот тип содержимого не поддерживает файлы. Загруженный файл должен быть отдельной частью сообщения MIME, представленным в форме.

Я не могу представить пример кода, потому что я вообще не разбираюсь в C# или .NET, но я считаю, что для создания таких сообщений должен быть класс, возможно, это нечто похожее на электронную почту обработки.

Смежные вопросы