Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios asiformdatarequest上载图像,不存在文件(null)_Ios_Upload_Asiformdatarequest - Fatal编程技术网

Ios asiformdatarequest上载图像,不存在文件(null)

Ios asiformdatarequest上载图像,不存在文件(null),ios,upload,asiformdatarequest,Ios,Upload,Asiformdatarequest,我使用asiformdatarequest框架上传图像,代码如下: NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *path1=[paths objectAtIndex:0]; NSString *filename=[path1 stringByAppendingPathComponent:@"logo.png"];

我使用asiformdatarequest框架上传图像,代码如下:

 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *path1=[paths objectAtIndex:0];
    NSString *filename=[path1 stringByAppendingPathComponent:@"logo.png"];  
    NSLog(@"image path = %@",filename);
    [request setFile:[NSURL URLWithString:filename] forKey:@"avatar"];
    [request startSynchronous];
我的日志:

image path = /Users/tanlusheng/Library/Application Support/iPhone Simulator/5.1/Applications/5473E6FF-0D3A-48CD-8728-0219CF25BC80/Documents/logo.png
Error Domain=ASIHTTPRequestErrorDomain Code=6 "No file exists at (null)" UserInfo=0x6b4c610 {NSLocalizedDescription=No file exists at (null)}

我在我的项目中添加了一个映像。但为什么它找不到文件?我在模拟器中运行。

当您尝试发送映像时,您尝试从应用程序的
文档
目录而不是主捆绑包发送映像。除非您明确地将图像放置在
Documents
目录中(您很可能通过代码执行),否则它将不在那里

请尝试以下方法:

NSString *filename = [[NSBundle mainBundle] pathForResource:@"logo" ofType:@"png"];  
[request setFile:[NSURL URLWithString:filename] forKey:@"avatar"];
[request setDelegate:self]; //Make sure this class receives request alerts
[request setDidFinishSelector:@selector(someMethod:)]; //Which method to call when finished
[request startAsynchronous];
注意,我还将请求更改为异步启动。你真的不想同步上传,否则你的应用程序将停止执行,直到请求完成。我还添加了自授权和一个选择器,用于在请求完成时进行选择

然后,您可以在此处处理已完成的查询:

- (void)someMethod:(ASIHTTPRequest *)request
{
    NSString *response = [request responseString];
    NSLog(@"%@", response);
}

如果仍然出现空错误,请确保图像具有目标成员身份。要做到这一点,请在Xcode中选择您的图像,并确保在右侧的TargetMemberSIP下勾选了小框。这将确保映像在生成时是应用程序的一部分。

对于路径try-NSString*filename=[[NSBundle mainBundle]pathForResource:@“logo”of type:@“png”]我尝试了您的代码,但它也“在(null)处不存在任何文件”