Explorar o código

完成了加密下载文件的功能

Shellmiao %!s(int64=4) %!d(string=hai) anos
pai
achega
d8593169da

+ 6 - 3
src/components/Page/File.js

@@ -4,6 +4,7 @@ import './File.less'
 import {Button, Dropdown, Menu, message} from "antd";
 import {apiDelete, apiDownload, apiFolderList} from "../../services/API/API";
 import getCookie from "../../utils/getCookie";
+import {dataURLtoFile} from "../../utils/base64ToFile";
 
 const fileDownload = require('js-file-download');
 
@@ -40,7 +41,9 @@ class File extends Component {
                 // window.location.href = "";
             } else {
                 message.success('下载开始');
-                fileDownload(res.data, this.props.ele.file_name)
+                console.log(res.data.file_b64)
+                let file_b = dataURLtoFile(res.data.file_b64, this.props.ele.file_name)
+                fileDownload(file_b, this.props.ele.file_name)
                 // window.location.href = "";
             }
         })
@@ -78,12 +81,12 @@ class File extends Component {
         const menu = (
             <Menu>
                 <Menu.Item key="download">
-                    <Button onClick={this.handleDownload} type="dashed" icon={<CloudDownloadOutlined />}>
+                    <Button onClick={this.handleDownload} type="dashed" icon={<CloudDownloadOutlined/>}>
                         DOWNLOAD
                     </Button>
                 </Menu.Item>
                 <Menu.Item key="delete">
-                    <Button onClick={this.handleDelete} type="dashed" icon={<DeleteOutlined />}>
+                    <Button onClick={this.handleDelete} type="dashed" icon={<DeleteOutlined/>}>
                         &nbsp;&nbsp;&nbsp;&nbsp;DELETE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                     </Button>
                 </Menu.Item>

+ 2 - 0
src/components/Page/File.less

@@ -36,6 +36,8 @@
   font-weight: bolder;
   text-align: center;
   margin-top: 1vh;
+  width: 100%;
+  overflow: hidden;
 }
 
 .file-date {

+ 4 - 2
src/components/Page/Folder.less

@@ -24,6 +24,8 @@
   font-size: 16px;
   font-weight: bolder;
   text-align: center;
+  width: 100%;
+  overflow: hidden;
 }
 
 .folder-date {
@@ -31,7 +33,7 @@
   color: rgba(0, 0, 0, .25)
 }
 
-.folder-options{
+.folder-options {
   float: right;
   margin-right: 1vh;
   margin-top: 0.5vh;
@@ -41,7 +43,7 @@
   font-weight: bold;
 }
 
-.dropdown-link{
+.dropdown-link {
   color: rgba(80, 167, 255, 0.76);
   font-weight: bold;
 }

+ 2 - 1
src/components/Page/UploadFile.js

@@ -148,7 +148,8 @@ class UploadFile extends Component {
                             multipleFiles={false}
                             handleFiles={this.handleFiles}
                         >
-                            <Button>
+                            <Button size="large" type="primary" htmlType="submit"
+                                    style={{width: '100%',}}>
                                 Select File
                             </Button>
                         </ReactFileReader>

+ 2 - 1
src/services/API/API.js

@@ -140,7 +140,8 @@ export function apiReset(params) {
 }
 
 export function apiDownload(params) {
-    return fetch({
+    let encryptobj = new EncryptObj()
+    return encryptobj.postData({
         url: '/file/download_file/',
         method: 'post',
         data: Qs.stringify(params),

+ 11 - 0
src/utils/base64ToFile.js

@@ -0,0 +1,11 @@
+export function dataURLtoFile(dataurl, filename) {
+    let arr = dataurl.split(","),
+        mime = arr[0].match(/:(.*?);/)[1],
+        bstr = atob(arr[1]),
+        n = bstr.length,
+        u8arr = new Uint8Array(n);
+    while (n--) {
+        u8arr[n] = bstr.charCodeAt(n);
+    }
+    return new File([u8arr], filename, {type: mime});
+}