如何将文件从MFC客户端(CInternetSession)上载到ASP.NET MVC

时间:2010-09-02 05:38:02

标签: asp.net-mvc

我使用MVC应用程序作为服务,所以我删除了视图。我能够调用控制器:

public class HomeController : Controller
{
    // GET: /Home/
    public string Index(string param1, string param2) {
       ...
    }
来自MFC应用程序的

string URL(_T("http://localhost:2374/home/index/myparam1/myparam2"));
pHttpFile = dynamic_cast<CHttpFile*> (m_Session.OpenURL(URL));
if (pHttpFile) {
    CHAR szBuff[1024] = { 0 };
    while (pHttpFile->Read(szBuff, 1024) > 0) {
        info += szBuff;
        ...

现在上传一个XML文件,我在MFC客户端上尝试这个:

CHttpConnection *pHttpConn = m_Session.GetHttpConnection(_T("localhost:2374"));
if (pHttpConn)
{
    CHttpFile *pHttpFile = pHttpConn->OpenRequest(
        CHttpConnection::HTTP_VERB_POST,
        _T("file.xml"));
    DWORD dwRet = 0;
    pHttpFile->QueryInfoStatusCode(dwRet);
    if (dwRet == HTTP_STATUS_OK)
    {
        CString headers(_T("Content-type: text/xml; charset=utf-8"));
        if (pHttpFile->AddRequestHeaders(headers))
        {
            if (pHttpFile->SendRequestEx(xml.GetLength(), HSR_SYNC | HSR_INITIATE))
            {
                pHttpFile->Write(xml, xml.GetLength());
                pHttpFile->EndRequest(HSR_SYNC);
                ...

这在MVC方面:

    [AcceptVerbs(HttpVerbs.Post)]
    public void FileUpload(HttpPostedFileBase uploadFile)
    {

客户端执行时没有错误,但服务器端没有任何反应。我不知道如何在Controller中调用FileUpload()。我是否使用MapRoute(),如果是这样的话?

1 个答案:

答案 0 :(得分:1)

服务器端没有任何变更。

问题是c ++客户端。您应该致电上传文件的网址是 http://localhost:2374/home/fileupload 。如果方法fileupload在家庭控制器中。你不需要任何其他途径。

我在代码项目http://www.codeproject.com/KB/library/lyoulhttpclient.aspx找到了一个用winnet上传文件的代码示例。我不是一个c ++人,可能还有更多。但这个看起来不错。