0

按照教程,我创建了 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";

        }
    }
}

我怎样才能使它工作?

谢谢。

4

1 回答 1

0

我让它工作了!

我将 apicontroller 更改为控制器

工作代码

    [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";
    }
于 2013-03-01T10:06:20.780 回答