ASIHTTPRequestErrorDomain代码= 8。无法将文件从临时目录移动到docs

时间:2011-09-28 09:04:01

标签: objective-c ios ios4 filesystems asihttprequest

我使用ASIHTTPReqeust下载文件。一切都下载得很好,但它无法将文件从临时目录移动到文档。当我实施

-(void) request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data

请求失败并显示错误。但文件已下载。

如果我删除此实现,一切都很好,文件正在转移到文档。 这是错误文本:

Error Domain=ASIHTTPRequestErrorDomain Code=8 "Failed to move file from '/var/folders/Qu/Qu0o0VcpEY4npJr2C1yPzE+++TI/-Tmp-/Skrillex feat. Nero - Wobbleland.mp3' to '/Users/Timur/Library/Application Support/iPhone Simulator/4.3/Applications/34389282-4013-4354-95D9-DF2847B4EE55/Documents/Audio/Skrillex feat. Nero - Wobbleland.mp3'" UserInfo=0x5949520 {NSUnderlyingError=0x59992a0 "The operation couldn’t be completed. (Cocoa error 4.)", NSLocalizedDescription=Failed to move file from '/var/folders/Qu/Qu0o0VcpEY4npJr2C1yPzE+++TI/-Tmp-/Skrillex feat. Nero - Wobbleland.mp3' to '/Users/Timur/Library/Application Support/iPhone Simulator/4.3/Applications/34389282-4013-4354-95D9-DF2847B4EE55/Documents/Audio/Skrillex feat. Nero - Wobbleland.mp3'}

谁有类似的问题?

2 个答案:

答案 0 :(得分:9)

经常吸引人们的是你必须创建自己下载的目录(ASIHTTPRequest不会自动创建它)。

但是,如果你说它与实现didReceiveData有关,那就不是那样了。

如果查看ASIHTTPRequest.m,如果在委托中实现'didReceiveData',则会看到它设置'dataWillBeHandledExternally' - 这将阻止数据写入磁盘。您可以自己编写数据,也可以更改ASIHTTPRequest.m代码以添加标志以强制它在内部处理数据。

答案 1 :(得分:1)

我遇到了同样的错误,但原因不同了。我会发布我的问题 - 以防其他人有类似的情况。

在保存新图像之前,我试图删除旧图像。

NSString *mImgName = [managedObj valueForKey:@"aImgName"];

NSString * mFilePath = [[self applicationDocumentsDirectory] 
                stringByAppendingPathComponent:mImgName];

if ([mFileManager fileExistsAtPath:mFilePath]) 
{
    [mFileManager removeItemAtPath:mFilePath error:nil];
}

问题是 - 如果 mImgName 为nil, mFileManager 将删除整个目录。

通过添加额外检查nil或太短的 mImgName 值,它解决了问题。

希望它会帮助别人!