WINMOBILE将文件从C#上传到php webservice

时间:2008-11-20 14:31:50

标签: c# php windows-mobile compact-framework

我需要使用C#从Windows移动应用上传文件到网站。它正在运行PHP作为另一方面的Web服务,但我想如果有另一种方法可以在那里获取文件,它真的没有必要。但是,没有服务器端ASP支持。我的问题不是PHP,而是移动C#代码。

此外, System.net.WebClient 在紧凑框架中不存在,所以不幸的是,这个简单的解决方案已经消失。

让我提前道歉,因为我知道这是一个相对常见的问题,但我似乎无法找到答案。我花了不少时间在这个特定的问题上没有解决方案,所以任何帮助都会非常感激。非常感谢!

2 个答案:

答案 0 :(得分:2)

在MSDN中查看这篇文章Improving .NET Compact Framework HTTP Communications using HttpWebRequest and Custom ASP.NET Providers。它专门针对ASP技术, 但紧凑框架保持不变。基本上它使用带有PUT方法的HttpWebRequest。如果您不允许在服务器中执行此操作,则需要自己创建一系列POST请求并相应地处理它们。

答案 1 :(得分:0)

以下代码段可能有助于解决我们在此讨论的问题。 如果与此主题无关​​,请忽略它。

有关如何使用文章或代码的简要说明。类名,方法和属性,任何技巧或提示。

代码块应设置为“格式化”样式,如下所示:

示例代码

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数据库。