'System.InvalidOperationException: Request format is invalid: multipart/form-data' error when posting image from iphone to .NET webservice

后端 未结 3 1762
南笙
南笙 2021-01-12 10:39

I\'m trying to post an image from an iphone app to a .Net webservice and I\'m running into this error. I\'ve already updated my web.config as per this kb article and I can

相关标签:
3条回答
  • 2021-01-12 11:03

    Thanks r_honey,

    Some additional code

    [WebMethod]
        public string UploadFile()
        {
        //if you take parameter in UploadFile() like UploadFile(string cropName, .....), then give error System.InvalidOperationException: Request format is invalid: multipart/form-data
            string ret = "";
            HttpRequest request = this.Context.Request;
            HttpPostedFile file = request.Files["upload"];
            string FileName = file.FileName;
            string cropName = request["cropName"];
    
            string ext = Path.GetExtension(FileName).ToLower();
    
            if (!(ext == ".png" || ext == ".jpg" || ext == ".jpeg"))// for only images file
            {
               ret = string.Format("File extension {0} not allowed.", ext);
    
                return ret;
            }
    
            if (FileName != "")
            {
                string path = HttpRuntime.BinDirectory;
    
                string UUID = System.Guid.NewGuid().ToString();
                string filepath = path + "upload/" + UUID + ".jpg";
                file.SaveAs(filepath);
                // add your code if any
            }
        }
    
    0 讨论(0)
  • 2021-01-12 11:10

    You are trying to read binary data as input parameters. You need to instead read the parameters from Context.Request. In other words, remove userToken and image as Request Parameters. userToken should be instead accessed through Context.Request["userToken"] and image should be available through Context.Request.PostedFiles["image"]: http://www.rahulsingla.com/blog/2010/07/ext-net-ajax-file-upload-using-web-service

    0 讨论(0)
  • 2021-01-12 11:11

    I got this to work by moving these to lines in web.config:

    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    

    They where placed in the bottom of the <system.webServer><handlers> section in web.config, but since I moved them to the top it seems to work!

    0 讨论(0)
提交回复
热议问题