MOBILE-3213 ios: Add timestamp to some files in iOS
parent
ece5905b36
commit
3d5041de7c
|
@ -150,20 +150,25 @@ export class CoreFileUploaderProvider {
|
||||||
* @return Options.
|
* @return Options.
|
||||||
*/
|
*/
|
||||||
getCameraUploadOptions(uri: string, isFromAlbum?: boolean): CoreFileUploaderOptions {
|
getCameraUploadOptions(uri: string, isFromAlbum?: boolean): CoreFileUploaderOptions {
|
||||||
const extension = this.mimeUtils.getExtension(uri),
|
const extension = this.mimeUtils.guessExtensionFromUrl(uri);
|
||||||
mimetype = this.mimeUtils.getMimeType(extension),
|
const mimetype = this.mimeUtils.getMimeType(extension);
|
||||||
isIOS = this.platform.is('ios'),
|
const isIOS = this.platform.is('ios');
|
||||||
options: CoreFileUploaderOptions = {
|
const options: CoreFileUploaderOptions = {
|
||||||
deleteAfterUpload: !isFromAlbum,
|
deleteAfterUpload: !isFromAlbum,
|
||||||
mimeType: mimetype
|
mimeType: mimetype
|
||||||
};
|
};
|
||||||
|
const fileName = this.fileProvider.getFileAndDirectoryFromPath(uri).name;
|
||||||
|
|
||||||
if (isIOS && (mimetype == 'image/jpeg' || mimetype == 'image/png')) {
|
if (isIOS && (mimetype == 'image/jpeg' || mimetype == 'image/png')) {
|
||||||
// In iOS, the pictures can have repeated names, even if they come from the album.
|
// In iOS, the pictures can have repeated names, even if they come from the album.
|
||||||
options.fileName = 'image_' + this.timeUtils.readableTimestamp() + '.' + extension;
|
// Add a timestamp to the filename to make it unique.
|
||||||
|
const split = fileName.split('.');
|
||||||
|
split[0] += '_' + this.timeUtils.readableTimestamp();
|
||||||
|
|
||||||
|
options.fileName = split.join('.');
|
||||||
} else {
|
} else {
|
||||||
// Use the same name that the file already has.
|
// Use the same name that the file already has.
|
||||||
options.fileName = this.fileProvider.getFileAndDirectoryFromPath(uri).name;
|
options.fileName = fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFromAlbum) {
|
if (isFromAlbum) {
|
||||||
|
|
|
@ -128,10 +128,12 @@ export class CoreFileUploaderHelperProvider {
|
||||||
* @param defaultExt Defaut extension to use if the file doesn't have any.
|
* @param defaultExt Defaut extension to use if the file doesn't have any.
|
||||||
* @return Promise resolved with the copied file.
|
* @return Promise resolved with the copied file.
|
||||||
*/
|
*/
|
||||||
protected copyToTmpFolder(path: string, shouldDelete: boolean, maxSize?: number, defaultExt?: string): Promise<any> {
|
protected copyToTmpFolder(path: string, shouldDelete: boolean, maxSize?: number, defaultExt?: string,
|
||||||
let fileName = this.fileProvider.getFileAndDirectoryFromPath(path).name,
|
options?: CoreFileUploaderOptions): Promise<any> {
|
||||||
promise,
|
|
||||||
fileTooLarge;
|
const fileName = (options && options.fileName) || this.fileProvider.getFileAndDirectoryFromPath(path).name;
|
||||||
|
let promise;
|
||||||
|
let fileTooLarge;
|
||||||
|
|
||||||
// Check that size isn't too large.
|
// Check that size isn't too large.
|
||||||
if (typeof maxSize != 'undefined' && maxSize != -1) {
|
if (typeof maxSize != 'undefined' && maxSize != -1) {
|
||||||
|
@ -154,9 +156,6 @@ export class CoreFileUploaderHelperProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
// File isn't too large.
|
// File isn't too large.
|
||||||
// Picking an image from album in Android adds a timestamp at the end of the file. Delete it.
|
|
||||||
fileName = fileName.replace(/(\.[^\.]*)\?[^\.]*$/, '$1');
|
|
||||||
|
|
||||||
// Get a unique name in the folder to prevent overriding another file.
|
// Get a unique name in the folder to prevent overriding another file.
|
||||||
return this.fileProvider.getUniqueNameInFolder(CoreFileProvider.TMPFOLDER, fileName, defaultExt);
|
return this.fileProvider.getUniqueNameInFolder(CoreFileProvider.TMPFOLDER, fileName, defaultExt);
|
||||||
}).then((newName) => {
|
}).then((newName) => {
|
||||||
|
@ -468,11 +467,13 @@ export class CoreFileUploaderHelperProvider {
|
||||||
path = 'file://' + path;
|
path = 'file://' + path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const options = this.fileUploaderProvider.getMediaUploadOptions(media);
|
||||||
|
|
||||||
if (upload) {
|
if (upload) {
|
||||||
return this.uploadFile(path, maxSize, true, this.fileUploaderProvider.getMediaUploadOptions(media));
|
return this.uploadFile(path, maxSize, true, options);
|
||||||
} else {
|
} else {
|
||||||
// Copy or move the file to our temporary folder.
|
// Copy or move the file to our temporary folder.
|
||||||
return this.copyToTmpFolder(path, true, maxSize);
|
return this.copyToTmpFolder(path, true, maxSize, undefined, options);
|
||||||
}
|
}
|
||||||
}, (error) => {
|
}, (error) => {
|
||||||
const defaultError = isAudio ? 'core.fileuploader.errorcapturingaudio' : 'core.fileuploader.errorcapturingvideo';
|
const defaultError = isAudio ? 'core.fileuploader.errorcapturingaudio' : 'core.fileuploader.errorcapturingvideo';
|
||||||
|
@ -552,11 +553,13 @@ export class CoreFileUploaderHelperProvider {
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const options = this.fileUploaderProvider.getCameraUploadOptions(path, fromAlbum);
|
||||||
|
|
||||||
if (upload) {
|
if (upload) {
|
||||||
return this.uploadFile(path, maxSize, true, this.fileUploaderProvider.getCameraUploadOptions(path, fromAlbum));
|
return this.uploadFile(path, maxSize, true, options);
|
||||||
} else {
|
} else {
|
||||||
// Copy or move the file to our temporary folder.
|
// Copy or move the file to our temporary folder.
|
||||||
return this.copyToTmpFolder(path, !fromAlbum, maxSize, 'jpg');
|
return this.copyToTmpFolder(path, !fromAlbum, maxSize, 'jpg', options);
|
||||||
}
|
}
|
||||||
}, (error) => {
|
}, (error) => {
|
||||||
const defaultError = fromAlbum ? 'core.fileuploader.errorgettingimagealbum' : 'core.fileuploader.errorcapturingimage';
|
const defaultError = fromAlbum ? 'core.fileuploader.errorgettingimagealbum' : 'core.fileuploader.errorcapturingimage';
|
||||||
|
|
Loading…
Reference in New Issue