C # Как мне загрузить файл на сервер PHP? - PullRequest
0 голосов
/ 04 октября 2009

Мне нужно загрузить файл на мой веб-сервер из программы на C #. Проблема в том, что мне нужно также POST две строки одновременно. Пока что у меня есть:

            HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create("http://localhost/test.php");             
            ASCIIEncoding encoding = new ASCIIEncoding();
            string postData = "&name=Test";
            postData += "&email=a@a.com";
            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>

Я не знаю, куда добавить поле файла, хотя: \ Буду признателен за любую помощь!

Ответы [ 2 ]

1 голос
/ 04 октября 2009

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

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

0 голосов
/ 04 октября 2009

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

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