2011-03-06 133 views
1

我是一个C#游戏程序员,很少有Web开发经验。C#上传文件到服务器 - 客户端和服务器端

我需要上传一个小文件(25-100左右的字节,取决于它的内容)到服务器。这是使用XNA的Windows Phone 7。目标服务器相当有限,只支持PHP和经典的ASP。

由于WP7上的CF只能访问有限的网络命令子集,因此它看起来像一个HttpWebRequest GET,旨在保存文件的脚本将是最佳选择。我发送的数据很小,应该能够作为url中的参数传递。

我一直在寻找,但还没有找到一个完整的例子,它处理客户端和服务器端脚本(主要是后者)。这是接近我正在寻找,但它没有提及服务器端脚本:Upload files with HTTPWebrequest (multipart/form-data)

,我得到的最接近是这样的:http://www.johny.org/2007/08/upload-using-c-as-client-and-php-as-server/

但是,当尝试使用它,我得到一个未处理异常:“远程服务器返回错误:(405)方法不允许”。这种方法似乎迄今为止最有希望,但我还没有能够调试。

不幸的是,我有很短的时间来实现这一点,正如我所说的只是一个熟悉web开发。我并不担心最大的安全性或可扩展性,因为这是收集内部反馈的临时措施。基本上,我只需要最快的工作。 ;)

任何帮助将是太棒了!

+0

该脚本是否在浏览器中工作? – vissi 2011-03-06 20:38:39

回答

0

我解决了它。首先,我的服务器不支持PHP(刚才了解到PHP和ASP不能在同一台服务器上使用,这取决于它是在Linux还是Windows上 - 就像我说的,Web开发noob在这里!)。我切换到ASP,并通过文档挖掘后,写这个剧本:

<% 

dim theData, theFileName 
set theData=Request("data") 
set theFileName=Request("filename") 

dim fs,tfile 
set fs=Server.CreateObject("Scripting.FileSystemObject") 
set tfile=fs.CreateTextFile(Server.MapPath(theFileName+".txt")) 
tfile.WriteLine(theData) 
tfile.Close 
set fname=nothing 
set fs=nothing 
set theData=nothing 
set theFileName=nothing 

%> 

此C#代码上传文件:

 const string cAddress = "http://site.com/folder/upload.asp"; 
     string fileName = foo; 
     string data = bar; 
     string address = cAddress + "?filename=" + fileName + "&data=" + data; 

     uploadRequest = (HttpWebRequest) HttpWebRequest.Create(address); 
     uploadRequest.Method = "GET"; 
     uploadRequest.GetResponse(); 

希望这可以帮助其他人寻找的是如何做榜样这个!

0

但你有方法作为GET而不是POST。通过将文件路径传递给查询字符串,您无法将文件上传到网站。