diff --git a/frontend/src/markdown-editor.js b/frontend/src/markdown-editor.js index c5b0bbfdc3..43920e1308 100644 --- a/frontend/src/markdown-editor.js +++ b/frontend/src/markdown-editor.js @@ -26,7 +26,7 @@ const { siteRoot, serviceUrl, seafileCollabServer } = window.app.config; const userInfo = window.app.userInfo; const userName = userInfo.username; let dirPath = Utils.getDirName(filePath); -const IMAGE_SUFFIXES = ['png', 'PNG', 'jpg', 'JPG', 'gif', 'GIF']; +const IMAGE_SUFFIXES = ['png', 'PNG', 'jpg', 'JPG', 'jpeg', 'JPEG', 'gif', 'GIF']; function getImageFileNameWithTimestamp() { var d = Date.now(); diff --git a/frontend/src/shared-file-view-markdown.js b/frontend/src/shared-file-view-markdown.js index 3995267b94..1d8d259fd6 100644 --- a/frontend/src/shared-file-view-markdown.js +++ b/frontend/src/shared-file-view-markdown.js @@ -55,7 +55,8 @@ class FileContent extends React.Component { let index2 = imagePath.indexOf('?'); imagePath = imagePath.substring(index + 5, index2); // change image url - innerNode.data.src = serviceURL + '/view-image-via-share-link/?token=' + sharedToken + '&path=' + Utils.encodePath(imagePath); + // the image path has been encoded when inserting the image + innerNode.data.src = serviceURL + '/view-image-via-share-link/?token=' + sharedToken + '&path=' + imagePath; } return innerNode; } diff --git a/seahub/views/file.py b/seahub/views/file.py index e9e97cab99..2c4fd8ed7a 100644 --- a/seahub/views/file.py +++ b/seahub/views/file.py @@ -1957,8 +1957,9 @@ def view_media_file_via_share_link(request): # Translation ‘(’ ')' image_file_name = image_file_name.replace('(', '\(') image_file_name = image_file_name.replace(')', '\)') + encoded_image_file_name = urllib.parse.quote(image_file_name) - p = re.compile('(%s)/lib/(%s)/file(.*?)%s\?raw=1' % (serviceURL, repo_id, image_file_name)) + p = re.compile('(%s)/lib/(%s)/file(.*?)%s\?raw=1' % (serviceURL, repo_id, encoded_image_file_name)) result = re.search(p, file_content) if not result: return render_error(request, 'Image does not exist')