ASIHTTPRequestErrorDomain Код=8. Не удается переместить файл из временной директории для документов
Я загружаю файлы с ASIHTTPReqeust. Все загружается нормально, но он не может переместить файл из временного каталога в документы. Когда я реализую
-(void) request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data
Запрос завершается ошибкой. Но файл скачивается.
Если я удалю эту реализацию, все будет нормально, и файлы будут перемещены в docs. Вот текст ошибки:
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 ответа:
То, что часто привлекает людей, заключается в том, что вам нужно создать каталог, который вы загружаете в себя (ASIHTTPRequest не создаст его автоматически).
Однако, учитывая, что вы говорите, что это связано с реализацией didReceiveData, это не так.
Если вы посмотрите на ASIHTTPRequest.m , вы увидите, что он устанавливает "dataWillBeHandledExternally", если вы реализуете "didReceiveData" в делегате - это будет препятствовать записи данных на диск. Вы можете либо запишите данные самостоятельно, или вы можете изменить ASIHTTPRequest.m код, чтобы добавить флаг, чтобы заставить его обрабатывать данные внутри тоже.
Я столкнулся с той же ошибкой, но причина была другой. Я опубликую свою проблему-просто на случай, если у кого-то еще есть подобная ситуация.
Я пытался удалить старые изображения, прежде чем сохранять новые.NSString *mImgName = [managedObj valueForKey:@"aImgName"]; NSString * mFilePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:mImgName]; if ([mFileManager fileExistsAtPath:mFilePath]) { [mFileManager removeItemAtPath:mFilePath error:nil]; }
Проблема была - в случае, еслиmImgName равно nil, mFileManager удалит весь каталог.
Добавив дополнительную проверку на нулевое или слишком короткое значение mImgName, он решил проблему.
Надеюсь, это кому-то поможет!