phonegap android ios,android - App cache iOS PhoneGap - Stack Overflow

Error code 1 means that the file was not found.

You need to get the application directory that your app is stored in. That is where your files will be e.g.

var imagePath = 'file:///var/mobile/Applications/E50F2661-798B-4F7D-9E6D- BCC266286934/tmp/cdv_photo_011.jpg'

FileErrors = {

1: 'File not found',

2: 'Security error',

3: 'Action Aborted',

4: 'File not readable',

5: 'Encoding error',

6: 'No modification allowed',

7: 'Invalid state error',

8: 'Syntax error',

9: 'Invalid modification error',

10: 'Quota Exceeded',

11: 'Type mismatch',

12: 'Path exists'

};

// extract the application directory from the full path

findApplicationDirectory = function (imagePath) {

var dir

, index = fullPath.indexOf('file:///') > -1 ? 6 : 4

if(fullPath.indexOf('/') > -1){

fullPath = fullPath.split('/')

if(fullPath[index]){

dir = fullPath[index]

}

}

return dir

}

// downloads a file from the server

// @param {string} url

// @param {string} filePath

// @param {function} callback

downloadFile = function (url, fileName, callback){

getApplicationDirectory(function (applicationDirectory){

var downloader = new FileTransfer()

, fileLocation = findApplicationDirectory(imagePath) + '/' + fileName;

downloader.download(

url,

fileLocation,

function(entry) {

console.log("-- downloadFile: download complete: " + entry.fullPath);

if(typeof callback == 'function'){

console.log('-- getFile: calling back');

callback.call(this, entry.fullPath);

}

},

function(error) {

console.log("-- downloadFile: fileLocation " + fileLocation);

console.log("-- downloadFile: download error source " + error.source);

console.log("-- downloadFile: download error target " + error.target);

console.log("-- downloadFile: download error code " + FileErrors[error.code]);

}

);

});

};

Make sure you have access to the Documents folder on iOS by adding UIFileSharingEnabled= "Application supports iTunes file sharing" to your project plist. Then you can see the contents of your App's documents folder by running your app on a device, connecting it to iTunes and under you device's list of apps finding your app.

To copy any file into the /Documents directory you can use the following

// move photo to documents directory

// @param {string} imagePath

// @return {string} newImagePath

// usage savePhotoToDocuments(imagePath).done(function (newImagePath) { }).fail(function () { })

savePhotoToDocuments = function (imagePath){

function onFileSystemSuccess(fileSystem) {

console.log('onFileSystemSuccess: fileSystem.name ' + fileSystem.name);

window.resolveLocalFileSystemURI(directoryPath, onGetDocumentDirectorySuccess, onGetDocumentDirectoryFail)

}

function onFileSystemFail(error){

console.log('onFileSystemFail: ' + FileErrors[error.code])

promise.reject(error)

}

function onResolveSuccess(fileEntry) {

imageFileEntry = fileEntry

imageFileEntry.copyTo(documentDirectory, newImageName, onCopyToSuccess, onCopyToFailed)

console.log('onResolveSuccess: ' + fileEntry);

}

function onResolveFail(error) {

console.log('onResolveFail: ' + FileErrors[error.code]);

promise.reject(error)

}

function onGetDocumentDirectoryFail (error){

console.log('onGetDocumentDirectoryFail: ' + FileErrors[error.code]);

promise.reject(error)

}

function onGetDocumentDirectorySuccess (directoryEntry){

documentDirectory = directoryEntry

console.log('onGetDocumentDirectorySuccess')

window.resolveLocalFileSystemURI(imagePath, onResolveSuccess, onResolveFail)

}

function onCopyToSuccess (fileEntry) {

console.log('-- savePhotoToDocuments: onCopyToSuccess')

promise.resolve(newImagePath)

}

function onCopyToFailed (error){

console.log('-- savePhotoToDocuments: onCopyToFailed - ' + FileErrors[error.code])

// invalid modification error

// meaning the file already exists

if(error.code != 9){

promise.reject(error)

} else {

promise.resolve(newImagePath)

}

}

var imageFileEntry

, documentDirectory

, promise = $.Deferred()

//, imagePath = 'file:///var/mobile/Applications/E50F2651-798B-4F7D-9E6D-BCC266286934/tmp/cdv_photo_011.jpg'

, imageName = imagePath.substring(imagePath.lastIndexOf('/')+1)

, newImageName = Date.now() + '_' + imageName

, directoryPath = 'file:///var/mobile/Applications/' + findApplicationDirectory(imagePath) + '/Documents'

, newImagePath = directoryPath + '/' + newImageName

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onFileSystemFail)

return promise

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值