diff --git a/README.md b/README.md index 29c60c3..2cc7e4a 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ React.render(, container); |component | "div"|"span" | "span"| wrap component name | |action| string | function(file): string | Promise<string> | | form action url | |method | string | post | request method | -|directory| boolean | false | support upload whole directory | +|directory| boolean \| 'nonClick' | false | support upload whole directory, 'nonClick' means unSupport click to upload directory | |data| object/function(file) | | other data object to post or a function which returns a data object(a promise object which resolve a data object) | |headers| object | {} | http headers to post, available in modern browsers | |accept | string | | input accept attribute | diff --git a/docs/demo/dragOnlyDirectory.md b/docs/demo/dragOnlyDirectory.md new file mode 100644 index 0000000..7da3a04 --- /dev/null +++ b/docs/demo/dragOnlyDirectory.md @@ -0,0 +1,9 @@ +--- +title: dragOnlyDirectory +nav: + title: Demo + path: /demo +--- + + + diff --git a/docs/examples/dragOnlyDirectory.tsx b/docs/examples/dragOnlyDirectory.tsx new file mode 100644 index 0000000..6e1471a --- /dev/null +++ b/docs/examples/dragOnlyDirectory.tsx @@ -0,0 +1,44 @@ +/* eslint no-console:0 */ +import React from 'react'; +import Upload from 'rc-upload'; + +const props = { + action: '/upload.do', + type: 'drag', + directory: 'nonClick' as 'nonClick', + beforeUpload(file, fileList) { + console.log('beforeUpload', file.name, fileList); + }, + onStart: file => { + console.log('onStart', file.name); + }, + onSuccess(file) { + console.log('onSuccess', file); + }, + onProgress(step, file) { + console.log('onProgress', Math.round(step.percent), file.name); + }, + onError(err) { + console.log('onError', err); + }, + style: { display: 'inline-block', width: 200, height: 200, background: '#eee' }, + // openFileDialogOnClick: false +}; + +const Test = () => { + return ( +
+
+ + 开始上传,只支持拖拽上传文件夹 + +
+
+ ); +}; + +export default Test; diff --git a/src/AjaxUploader.tsx b/src/AjaxUploader.tsx index 01fee9a..3a8eefd 100644 --- a/src/AjaxUploader.tsx +++ b/src/AjaxUploader.tsx @@ -335,7 +335,7 @@ class AjaxUploader extends Component { }); // because input don't have directory/webkitdirectory type declaration const dirProps: any = - directory || folder ? { directory: 'directory', webkitdirectory: 'webkitdirectory' } : {}; + directory === true || folder ? { directory: 'directory', webkitdirectory: 'webkitdirectory' } : {}; const events = disabled ? {} : { diff --git a/src/interface.tsx b/src/interface.tsx index 528c083..ce5c962 100644 --- a/src/interface.tsx +++ b/src/interface.tsx @@ -14,7 +14,7 @@ export interface UploadProps action?: Action; method?: UploadRequestMethod; /** @deprecated Please use `folder` instead */ - directory?: boolean; + directory?: boolean | 'nonClick'; folder?: boolean; data?: Record | ((file: RcFile | string | Blob) => Record); headers?: UploadRequestHeader;