Fix encoding binary files for sync from the Desktop, Obsidian client (#506)

- Fix encoding binary files like PDFs for sync from Desktop client
- Fix encoding binary files like PDFs for sync from Obsidian client
This commit is contained in:
Debanjum
2023-10-17 15:37:22 -07:00
committed by GitHub
2 changed files with 5 additions and 4 deletions

View File

@@ -135,9 +135,10 @@ function pushDataToKhoj (regenerate = false) {
} }
try { try {
encoding = binaryFileTypes.includes(file.split('.').pop()) ? "binary" : "utf8"; let encoding = binaryFileTypes.includes(file.split('.').pop()) ? "binary" : "utf8";
mimeType = filenameToMimeType(file) + (encoding === "utf8" ? "; charset=UTF-8" : ""); let mimeType = filenameToMimeType(file) + (encoding === "utf8" ? "; charset=UTF-8" : "");
fileObj = new Blob([fs.createReadStream(file, encoding)], { type: mimeType }); let fileContent = Buffer.from(fs.readFileSync(file, { encoding: encoding }), encoding);
let fileObj = new Blob([fileContent], { type: mimeType });
formData.append('files', fileObj, file); formData.append('files', fileObj, file);
state[file] = { state[file] = {
success: true, success: true,

View File

@@ -62,7 +62,7 @@ export async function updateContentIndex(vault: Vault, setting: KhojSetting, las
countOfFilesToIndex++; countOfFilesToIndex++;
const encoding = binaryFileTypes.includes(file.extension) ? "binary" : "utf8"; const encoding = binaryFileTypes.includes(file.extension) ? "binary" : "utf8";
const mimeType = fileExtensionToMimeType(file.extension) + (encoding === "utf8" ? "; charset=UTF-8" : ""); const mimeType = fileExtensionToMimeType(file.extension) + (encoding === "utf8" ? "; charset=UTF-8" : "");
const fileContent = await vault.read(file); const fileContent = encoding == 'binary' ? await vault.readBinary(file) : await vault.read(file);
formData.append('files', new Blob([fileContent], { type: mimeType }), file.path); formData.append('files', new Blob([fileContent], { type: mimeType }), file.path);
} }