diff --git a/frontend/src/components/shared-link-file-uploader/file-uploader.js b/frontend/src/components/shared-link-file-uploader/file-uploader.js index 852b1777d0..1f8de219ae 100644 --- a/frontend/src/components/shared-link-file-uploader/file-uploader.js +++ b/frontend/src/components/shared-link-file-uploader/file-uploader.js @@ -27,6 +27,7 @@ const propTypes = { fileTypeErrorCallback: PropTypes.func, dragAndDrop: PropTypes.bool.isRequired, path: PropTypes.string.isRequired, + uploadUrlPath: PropTypes.string.isRequired, onFileUploadSuccess: PropTypes.func.isRequired }; @@ -203,8 +204,8 @@ class FileUploader extends React.Component { }); } else { this.setUploadFileList(this.resumable.files); - let { token } = this.props; - seafileAPI.sharedLinkGetFileUploadUrl(token).then(res => { + let { token, uploadUrlPath } = this.props; + seafileAPI.sharedLinkGetFileUploadUrl(token, uploadUrlPath).then(res => { this.resumable.opts.target = res.data.upload_link + '?ret-json=1'; this.resumableUpload(resumableFile); }).catch(error => { @@ -216,8 +217,8 @@ class FileUploader extends React.Component { this.setUploadFileList(this.resumable.files); if (!this.isUploadLinkLoaded) { this.isUploadLinkLoaded = true; - let { token } = this.props; - seafileAPI.sharedLinkGetFileUploadUrl(token).then(res => { + let { token, uploadUrlPath } = this.props; + seafileAPI.sharedLinkGetFileUploadUrl(token, uploadUrlPath).then(res => { this.resumable.opts.target = res.data.upload_link + '?ret-json=1'; this.resumable.upload(); }).catch(error => { @@ -563,8 +564,8 @@ class FileUploader extends React.Component { onUploadRetry = (resumableFile) => { - let { token } = this.props; - seafileAPI.sharedLinkGetFileUploadUrl(token).then(res => { + let { token, uploadUrlPath } = this.props; + seafileAPI.sharedLinkGetFileUploadUrl(token, uploadUrlPath).then(res => { this.resumable.opts.target = res.data.upload_link + '?ret-json=1'; let retryFileList = this.state.retryFileList.filter(item => { @@ -590,8 +591,8 @@ class FileUploader extends React.Component { onUploadRetryAll = () => { - let { token } = this.props; - seafileAPI.sharedLinkGetFileUploadUrl(token).then(res => { + let { token, uploadUrlPath } = this.props; + seafileAPI.sharedLinkGetFileUploadUrl(token, uploadUrlPath).then(res => { this.resumable.opts.target = res.data.upload_link + '?ret-json=1'; this.state.retryFileList.forEach(item => { item.error = false; @@ -644,8 +645,8 @@ class FileUploader extends React.Component { uploadFile = () => { let resumableFile = this.resumable.files[this.resumable.files.length - 1]; - let { token } = this.props; - seafileAPI.sharedLinkGetFileUploadUrl(token).then(res => { + let { token, uploadUrlPath } = this.props; + seafileAPI.sharedLinkGetFileUploadUrl(token, uploadUrlPath).then(res => { this.resumable.opts.target = res.data.upload_link + '?ret-json=1'; this.setState({ isUploadRemindDialogShow: false, diff --git a/frontend/src/shared-dir-view.js b/frontend/src/shared-dir-view.js index 648b3b9559..a8ad89daa1 100644 --- a/frontend/src/shared-dir-view.js +++ b/frontend/src/shared-dir-view.js @@ -19,7 +19,7 @@ import './css/grid-view.css'; moment.locale(window.app.config.lang); let loginUser = window.app.pageOptions.name; -const { +let { token, dirName, dirPath, sharedBy, repoID, path, mode, thumbnailSize, zipped, @@ -27,6 +27,8 @@ const { noQuota, canUpload } = window.shared.pageOptions; +dirPath = dirPath.replace(/\/+$/, ""); // used for upload file +const uploadUrlPath = path.replace(/\/+$/, ""); // used for get dir upload link const showDownloadIcon = !trafficOverLimit && canDownload; class SharedDirView extends React.Component { @@ -311,6 +313,7 @@ class SharedDirView extends React.Component { dragAndDrop={false} token={token} path={dirPath} + uploadUrlPath={uploadUrlPath} repoID={repoID} onFileUploadSuccess={this.onFileUploadSuccess} />