parent
3584853f39
commit
864b135da4
1 changed files with 9 additions and 21 deletions
|
@ -56,7 +56,6 @@ Zotero_Import_Mendeley.prototype.translate = async function (options = {}) {
|
||||||
skipSelect: true,
|
skipSelect: true,
|
||||||
...(options.saveOptions || {})
|
...(options.saveOptions || {})
|
||||||
};
|
};
|
||||||
this.timestamp = Date.now();
|
|
||||||
|
|
||||||
if (true) {
|
if (true) {
|
||||||
Services.scriptloader.loadSubScript("chrome://zotero/content/import/mendeley/mendeleySchemaMap.js");
|
Services.scriptloader.loadSubScript("chrome://zotero/content/import/mendeley/mendeleySchemaMap.js");
|
||||||
|
@ -708,26 +707,10 @@ Zotero_Import_Mendeley.prototype._getDocumentFilesAPI = async function (document
|
||||||
for (let file of (doc.files || [])) {
|
for (let file of (doc.files || [])) {
|
||||||
// Most filesystems limit filename to 255 bytes
|
// Most filesystems limit filename to 255 bytes
|
||||||
let fileName = Zotero.File.truncateFileName(Zotero.File.getValidFileName(file.file_name || 'file'), 255);
|
let fileName = Zotero.File.truncateFileName(Zotero.File.getValidFileName(file.file_name || 'file'), 255);
|
||||||
let tmpFile = OS.Path.join(Zotero.getTempDirectory().path, `m-api-${this.timestamp}-${file.id}`, fileName);
|
let ext = fileName.includes('.') ? fileName.split('.').pop() : '';
|
||||||
// Limit path length on Windows
|
let fileBaseName = ext === '' ? fileName : fileName.slice(0, -ext.length - 1);
|
||||||
//
|
let tmpFile = OS.Path.join(Zotero.getTempDirectory().path, `m-api-${file.id}.${ext}`);
|
||||||
// This can be raised in Windows 10 but probably isn't for most people. The limit is
|
|
||||||
// theoretically 260, but File Explorer seems to limit paths to 255, so stick to that.
|
|
||||||
// https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation
|
|
||||||
if (Zotero.isWin) {
|
|
||||||
let pathLength = Zotero.Utilities.Internal.byteLength(tmpFile);
|
|
||||||
if (pathLength >= 255) {
|
|
||||||
let surplus = pathLength - 255;
|
|
||||||
let fileNameLength = Zotero.Utilities.Internal.byteLength(fileName);
|
|
||||||
if (surplus >= fileNameLength) {
|
|
||||||
Zotero.logError(`Skipping file due to path exceeding filesystem limits: ${tmpFile}`);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Zotero.debug(`${fileName} will be truncated by ${surplus} bytes`);
|
|
||||||
fileName = Zotero.File.truncateFileName(fileName, fileNameLength - surplus);
|
|
||||||
tmpFile = OS.Path.join(Zotero.getTempDirectory().path, `m-api-${this.timestamp}-${file.id}`, fileName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this._tmpFilesToDelete.push(tmpFile);
|
this._tmpFilesToDelete.push(tmpFile);
|
||||||
caller.add(this._fetchFile.bind(this, file.id, tmpFile));
|
caller.add(this._fetchFile.bind(this, file.id, tmpFile));
|
||||||
files.push({
|
files.push({
|
||||||
|
@ -735,6 +718,7 @@ Zotero_Import_Mendeley.prototype._getDocumentFilesAPI = async function (document
|
||||||
title: file.file_name || '',
|
title: file.file_name || '',
|
||||||
contentType: file.mime_type || '',
|
contentType: file.mime_type || '',
|
||||||
hash: file.filehash,
|
hash: file.filehash,
|
||||||
|
fileBaseName
|
||||||
});
|
});
|
||||||
totalSize += file.size;
|
totalSize += file.size;
|
||||||
this._progressMax += 1;
|
this._progressMax += 1;
|
||||||
|
@ -1418,6 +1402,7 @@ Zotero_Import_Mendeley.prototype._saveFilesAndAnnotations = async function (file
|
||||||
title: file.title,
|
title: file.title,
|
||||||
contentType: file.contentType
|
contentType: file.contentType
|
||||||
};
|
};
|
||||||
|
|
||||||
// If we're not set to link files or file is in Mendeley downloads folder, import it
|
// If we're not set to link files or file is in Mendeley downloads folder, import it
|
||||||
if (!this._linkFiles || this._isDownloadedFile(path) || this._isTempDownloadedFile(path)) {
|
if (!this._linkFiles || this._isDownloadedFile(path) || this._isTempDownloadedFile(path)) {
|
||||||
if (file.url) {
|
if (file.url) {
|
||||||
|
@ -1427,6 +1412,9 @@ Zotero_Import_Mendeley.prototype._saveFilesAndAnnotations = async function (file
|
||||||
attachment = await Zotero.Attachments.importSnapshotFromFile(options);
|
attachment = await Zotero.Attachments.importSnapshotFromFile(options);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (file.fileBaseName) {
|
||||||
|
options.fileBaseName = file.fileBaseName;
|
||||||
|
}
|
||||||
attachment = await Zotero.Attachments.importFromFile(options);
|
attachment = await Zotero.Attachments.importFromFile(options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue