在服务器端asp.net mvc的iphone phonegap应用程序中的文件传输错误



遵循本教程,我创建了用于文件传输的iPhone客户端。我可以选择要上传的文件,但在上传到服务器时出现如下错误。

2013-03-01 19:38:35.841 StampedeTest[1687:c07] FileTransferError {
code = 3;
"http_status" = 405;
source = "file://localhost/Users/davidroper/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/5C506A40-959F-4A15-8D01-B3343EDB3257/tmp/cdv_photo_004.jpg";
target = "http://******.azurewebsites.net/api/FileUploadTest";
}

上传

客户端代码
 function uploadPhoto(imageURI) {
        var options = new FileUploadOptions();
        options.fileKey="file";
        options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
        options.mimeType="image/jpeg";
        var params = new Object();
        params.value1 = "test";
        params.value2 = "param";
        options.params = params;
        options.chunkedMode = false;
        var ft = new FileTransfer();
        ft.upload(imageURI, "http://*****.azurewebsites.net/api/FileUploadTest", win, fail, options);
    }

服务端代码
public class FileUploadTestController : ApiController
{ 
    [WebMethod]
    public string Getupload()
    {
        if (HttpContext.Current.Request.Files["file"] != null)
        {
            HttpPostedFile file = HttpContext.Current.Request.Files["file"];
            string targetFilePath = "http://stampedemvc.azurewebsites.net/Content/img/" + file.FileName;
            file.SaveAs(targetFilePath);
            return file.FileName.ToString();
        }
        else {
            return "Error";
        }
    }
}

我怎样才能使它工作?

谢谢。

我搞定了!

我把apicontroller改成controller

工作代码

    [HttpPost]
    public string Getupload()
    {
        HttpFileCollectionBase Files = Request.Files;
        bool fileSaved = false;
        foreach (string h in Files.AllKeys)
        {
            if (Files[h].ContentLength > 0)
            {
                string fileName = Files[h].FileName;
                int fileSize = Files[h].ContentLength;
                string serverPath = Path.Combine(Server.MapPath("..\Content\img\"));
                if (!Directory.Exists(serverPath))
                {
                    Directory.CreateDirectory(serverPath);
                }
                try
                {
                    //Get & Save the File
                    Request.Files.Get(h).SaveAs(serverPath + fileName);
                    fileSaved = true;
                }
                catch (Exception ex)
                {
                }
            }
        }
        return "Success";
    }

相关内容

最新更新