代码之家  ›  专栏  ›  技术社区  ›  Frank

无法使用ASIFormDataRequest将图像从iphone Photo Picker上载到服务器

  •  0
  • Frank  · 技术社区  · 14 年前

    基本上,我试图上传一个图像使用ASIFormDataRequest。这是我下面的代码

    ASIFormDataRequest *request = [ASIHTTPRequest requestWithURL:urlImg];
    [request setRequestMethod:@"POST"];
    [request addRequestHeader:@"Content-Type" value:@"application/xml"];
    [request setDelegate:self];
    
    [request setTimeOutSeconds:500];  
    NSData *imageData = UIImagePNGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"]);
    [request setData:imageData forKey:@"media"];
    [request startAsynchronous];
    

    基本上我的应用程序会崩溃,并给我以下错误:

    [ASIHTTPRequest setData:forKey:]: unrecognized selector sent to instance 0x8880db0
    2010-06-28 12:33:49.803 vdq[7658:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[ASIHTTPRequest setData:forKey:]: unrecognized selector sent to instance 0x8880db0'
    

    1 回复  |  直到 14 年前
        1
  •  2
  •   christophercotton    14 年前

    两件事。你得到的原因是因为第一行:

    ASIFormDataRequest *request = [ASIHTTPRequest requestWithURL:urlImg];
    

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:urlImg];
    

    另外,您不需要设置RequestMethod,因为这是自动完成的。最后,如果服务真的需要上传一个XML文档。那你就不能使用FormData了。仅当您上载的数据与HTML表单匹配并且使用多部分表单或url编码的数据进行编码时,才会使用格式数据。如果需要XML,则需要自己构造XML文档,然后发布该文档中的数据。