我正在考虑编写一个 C# 客户端应用程序。在这个应用程序中,我需要将文件上传到服务器并让服务器响应字符串(上传文件的唯一标识符。)
我对 C# 和 ASP.Net MVC 都很熟悉,也很熟悉。我可以使用这些技术以相对安全的方式执行此操作,还是需要使用某种 WCF Web 服务 thingie-mah-jig?(我注意到“相对安全”,因为上传的任何内容都不会保密,而且绝对不是关键任务)
无论哪种情况,有关该主题的任何资源(即使它恰好位于 VB.Net 中)都会很棒。
非常感谢你!
编辑:发布一些代码。我有一个简单的网站,只有一个接受带有文件的 POST 的事件:
[HttpPost]
public string Upload(HttpPostedFileBase file)
{
string sPath = "";
if (file != null && file.ContentLength > 0)
{
try
{
string sFileName = "test.txt";
// Save file
sPath = Path.Combine(Server.MapPath("~/App_Data/uploads"), sFileName).ToString();
file.SaveAs(sPath);
// Return val
return sPath;
}
catch
{
return "Error on Save .. tried to save to\n" + sPath;
}
}
return "no file";
}
在客户端,C# 应用程序执行以下操作:
using (WebClient wc = new WebClient())
{
try
{
byte[] bResponse = wc.UploadFile("http://127.0.0.1/ISSHost/file/upload", "POST", "C:\\test.txt");
string sResponse = System.Text.Encoding.ASCII.GetString(bResponse);
MessageBox.Show("\nResponse received: " + sResponse);
}
catch(Exception exception)
{
string sError = exception.ToString();
if (exception.InnerException != null)
sError += "\n" + exception.InnerException.ToString();
MessageBox.Show("Error!\n" + sError);
}
}
this.Dispose();
}
有用。我想知道的是,如果我以完全错误的方式处理这个问题,或者我可能会暴露什么样的安全漏洞......等等。我这样做会产生什么影响?有没有更好的办法?
更重要的是,如何防止最终用户尝试导航到上传页面(在这种情况下——http://127.0.0.1/ISSHost/file/upload
实际上页面没有“GET”部分,所以它只有 404。)
再次感谢!