繁体   English   中英

从iOS设备上载失败,但在iOS模拟器中完美运行

[英]Uploading fails from an iOS device but it works perfect from the iOS Simulator

当我在iOS Simulator上运行此代码时,这段代码可以完美地工作。 当我在设备上运行此文件时,我的MVC3控制器上的文件计数为零。

这是我的目标C代码

// create request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];                                    
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:YES];
[request setTimeoutInterval:30];
[request setHTTPMethod:@"POST"];

 NSString *boundary = @"WebKitFormBoundaryAFokZJl5GNWFRG28";

// set Content-Type in HTTP header
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"patid\"\r\n\r\n %@", _patID] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"apicall\"\r\n\r\n %@", @"yes"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

// add image data
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
if (imageData) {
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"image.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"Content-Type: image/jpeg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:imageData];
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}

[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

// setting the body of the post to the reqeust
[request setHTTPBody:body];

// set the content-length
NSString *postLength = [NSString stringWithFormat:@"%d", [body length]];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

NSMutableString *sURL;

sURL = _postURL;

NSURL *url = [[NSURL alloc]initWithString:sURL];
[request setURL:url];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"%@", returnString);

我的ASP.NET MVC3控制器方法

    [HttpPost]
    public ActionResult Create(HttpPostedFileBase file)
    {
        if (file != null && file.ContentLength > 0)
        {
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/images/id"), fileName);
            file.SaveAs(path);
        }
        return View();
    }

当我从模拟器运行此文件时,我在MVC3控制器上获取了文件(HttpPostedFileBase不为null)。 当我从设备运行相同的代码时,文件为NULL。

难道我做错了什么? 有人可以帮帮我吗...

编辑 -感谢@Martin,您给了我提示。

我发现了由我的公司代理服务器引起的奇怪问题。 按照您的建议,我试图在Windows计算机上设置Fiddler实例,并将其配置为iPAD的代理。 出乎意料的是,当我在公司代理上重新尝试上传功能时,它没有问题,但失败了。 我会尽快解决。.非常感谢您的回复@Martin R ...非常感谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM