Мне нужно загрузить файл с помощью C# из мобильного приложения Windows на веб-сайт. Он запускает PHP как веб-сервис на другой стороне, хотя я думаю, что на самом деле это не обязательно, если есть другой способ получить файл там. Однако поддержки ASP на стороне сервера нет. Моя проблема действительно не в PHP, а в мобильном коде C#.
Кроме того, System.net.WebClient НЕ существует в компактной структуре, поэтому, к сожалению, этого простого решения нет.
Позвольте мне заранее извиниться, потому что я знаю, что это относительно часто задаваемый вопрос, но я просто не могу найти ответа. Я потратил неподобающее количество времени на решение этой одной конкретной проблемы, но без решения, поэтому я буду очень благодарен за любую помощь. Большое спасибо!





Взгляните на эту статью Улучшение связи по протоколу HTTP в .NET Compact Framework с помощью HttpWebRequest и настраиваемых поставщиков ASP.NET в MSDN. Это характерно для технологии ASP, но Compact Framework остается прежней. В основном он использует HttpWebRequest с методом PUT. Если вам не разрешено делать это на сервере, вам необходимо самостоятельно создать последовательность запросов POST и обработать их соответствующим образом.
Следующий фрагмент кода может помочь решить проблему, которую мы здесь обсуждаем. Не обращайте на это внимания, если это не имеет отношения к данной теме.
Краткое описание того, как использовать статью или код. Имена классов, методы и свойства, любые хитрости и подсказки.
Блоки кода должны быть настроены как стиль «Отформатированный» следующим образом:
Образец кода
using System.Data;
using System.Data.Sql
using System.Data.SqlClient;
using System.Web;
using System.Web.Services;
public class FileUploader: System.Web.Services.WebService {
SqlConnection myConnection = new SqlConnection("Data Source=server name ;Initial Catalog=database name; User ID=username; Password='password';");
SqlCommand myCommand = new SqlCommand();
string queryString = "";
public string UploadFile(byte[] f, string fileName)
{
// the byte array argument contains the content of the file
// the string argument contains the name and extension
// of the file passed in the byte array
string nm = data[0];
string sn =data[1];
string bn =data[2];
string st = data[3];
byte img = Convert.Tobyte(img);
myConnection.Open();
queryString = "INSERT INTO tablename(Name,SchemeName,BeneficiarName,Status,Photo)"
+ "VALUES('" + nm + "','" + sn + "','"+ bn +"','" + st + "',@img,')";
myCommand.Parameters.AddWithValue("@img",f);
myCommand.Connection = myConnection;
myCommand.CommandType = CommandType.Text; myCommand.CommandText = queryString; int res = myCommand.ExecuteNonQuery(); myConnection.Close();
if (res > 0)
{
strres = "File Uploaded successfully"; }
else
{
strres = "File not uploaded";
}
return strres;
}
Требования
Visual Studio.Net 2005
.Net Framework 2.0
База данных MS SQL Server 2000 или база данных MS SQL Server 2005.
Привет, атака с использованием SQL-инъекций!
Это не такой уж и частый вопрос. Общение с веб-службой ASP.NET из C# - это проще простого.