C#将文件上传到服务器 - 客户端和服务器端

时间:2011-03-06 20:02:28

标签: c# asp.net http

我是一名C#游戏程序员,几乎没有Web开发经验。

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

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

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

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

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

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

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

我已经解决了。首先,我的服务器不支持PHP(刚才我知道PHP和ASP不能在同一台服务器上使用,具体取决于它是在Linux还是Windows上 - 就像我说的那样,web开发菜鸟!)。我切换到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();

希望这有助于其他人寻找如何做到这一点的例子!

答案 1 :(得分:0)

但是您将METHOD作为GET而不是POST。您不能通过将文件路径传递给查询字符串来将文件上载到网站。