├── .bowerrc ├── .gitignore ├── README.md ├── app.js ├── bin └── www ├── bower.json ├── core ├── front │ └── README.md └── server │ ├── config │ ├── aliyuOss.config.js │ ├── aliyunAccount.js │ ├── fileManager.config.js │ └── index.js │ ├── controllers │ ├── aliyunOss.controller.js │ └── localCloud.controller.js │ ├── errors │ ├── bad-request-error.js │ ├── index.js │ ├── internal-server-error.js │ ├── not-found-error.js │ └── validation-error.js │ ├── models │ ├── aliyunOss.model.js │ └── localCloud.model.js │ ├── routes │ ├── index.js │ └── localCloud.js │ └── utils │ ├── header.js │ └── pipeline.js ├── localCloudStore ├── Bucket1 │ └── folder │ │ ├── Screen Shot 2016-02-17 at 6.31.26 PM.png │ │ ├── Screen Shot 2016-02-17 at 6.31.28 PM.png │ │ └── Screen Shot 2016-02-17 at 6.31.38 PM.png ├── Bucket2 │ ├── 214aa4f9-c0d5-4464-82ca-8328a6f92e29 (1).ico │ ├── 214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico │ ├── 214aa4f9-c0d5-4464-82ca-8328a6f92e29 (5).ico │ ├── 95f183cf-4fff-475e-9269-62c6677aa0e5 (1).png │ ├── 95f183cf-4fff-475e-9269-62c6677aa0e5.png │ ├── TryReact │ │ ├── 214aa4f9-c0d5-4464-82ca-8328a6f92e29 (4).ico │ │ ├── llljlkjl │ │ └── sdfs │ │ │ ├── 214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico │ │ │ └── sdf │ │ │ ├── 214aa4f9-c0d5-4464-82ca-8328a6f92e29 (3).ico │ │ │ └── new │ │ │ └── sdf │ │ │ └── abcb │ │ │ └── HelloWorldabcsdf │ │ │ ├── .flowconfig │ │ │ ├── .gitignore │ │ │ ├── .watchmanconfig │ │ │ └── android │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── gradlew.bat │ │ │ └── settings.gradle │ └── sdfsdsf └── Bucket3 │ ├── android │ ├── 214aa4f9-c0d5-4464-82ca-8328a6f92e29 (1).ico │ ├── 214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico │ └── app │ │ ├── build.gradle │ │ ├── gradle │ │ ├── ios │ │ │ ├── HelloWorld.xcodeproj │ │ │ │ ├── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcuserdata │ │ │ │ │ │ └── markstock.xcuserdatad │ │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ │ ├── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ │ └── HelloWorld.xcscheme │ │ │ │ └── xcuserdata │ │ │ │ │ ├── markstock.xcuserdatad │ │ │ │ │ └── xcschemes │ │ │ │ │ │ └── xcschememanagement.plist │ │ │ │ │ └── project.pbxproj │ │ │ ├── HelloWorld │ │ │ │ ├── AppDelegate.h │ │ │ │ ├── AppDelegate.m │ │ │ │ ├── Base.lproj │ │ │ │ │ └── LaunchScreen.xib │ │ │ │ ├── Images.xcassets │ │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ │ └── Contents.json │ │ │ │ ├── Info.plist │ │ │ │ └── main.m │ │ │ ├── HelloWorldTests │ │ │ │ ├── HelloWorldTests.m │ │ │ │ └── Info.plist │ │ │ ├── build │ │ │ │ ├── Build │ │ │ │ │ └── Intermediates │ │ │ │ │ │ ├── RCTActionSheet.build │ │ │ │ │ │ └── Debug-iphonesimulator │ │ │ │ │ │ │ └── RCTActionSheet.build │ │ │ │ │ │ │ ├── Objects-normal │ │ │ │ │ │ │ └── x86_64 │ │ │ │ │ │ │ │ ├── RCTActionSheet.LinkFileList │ │ │ │ │ │ │ │ ├── RCTActionSheetManager.d │ │ │ │ │ │ │ │ └── RCTActionSheetManager.dia │ │ │ │ │ │ │ ├── RCTActionSheet-all-non-framework-target-headers.hmap │ │ │ │ │ │ │ ├── RCTActionSheet-all-target-headers.hmap │ │ │ │ │ │ │ ├── RCTActionSheet-generated-files.hmap │ │ │ │ │ │ │ ├── RCTActionSheet-own-target-headers.hmap │ │ │ │ │ │ │ ├── RCTActionSheet-project-headers.hmap │ │ │ │ │ │ │ ├── RCTActionSheet.hmap │ │ │ │ │ │ │ └── dgph │ │ │ │ │ │ ├── RCTImage.build │ │ │ │ │ │ └── Debug-iphonesimulator │ │ │ │ │ │ │ └── RCTImage.build │ │ │ │ │ │ │ ├── Objects-normal │ │ │ │ │ │ │ └── x86_64 │ │ │ │ │ │ │ │ ├── RCTImage.LinkFileList │ │ │ │ │ │ │ │ ├── RCTImageStoreManager.d │ │ │ │ │ │ │ │ ├── RCTImageStoreManager.dia │ │ │ │ │ │ │ │ ├── RCTImageViewManager.d │ │ │ │ │ │ │ │ ├── RCTImageViewManager.dia │ │ │ │ │ │ │ │ ├── RCTVirtualImageManager.d │ │ │ │ │ │ │ │ └── RCTVirtualImageManager.dia │ │ │ │ │ │ │ ├── RCTImage-all-non-framework-target-headers.hmap │ │ │ │ │ │ │ ├── RCTImage-all-target-headers.hmap │ │ │ │ │ │ │ ├── RCTImage-generated-files.hmap │ │ │ │ │ │ │ ├── RCTImage-own-target-headers.hmap │ │ │ │ │ │ │ ├── RCTImage-project-headers.hmap │ │ │ │ │ │ │ ├── RCTImage.hmap │ │ │ │ │ │ │ └── dgph │ │ │ │ │ │ ├── RCTLinking.build │ │ │ │ │ │ └── Debug-iphonesimulator │ │ │ │ │ │ │ └── RCTLinking.build │ │ │ │ │ │ │ ├── Objects-normal │ │ │ │ │ │ │ └── x86_64 │ │ │ │ │ │ │ │ ├── RCTLinking.LinkFileList │ │ │ │ │ │ │ │ ├── RCTLinkingManager.d │ │ │ │ │ │ │ │ └── RCTLinkingManager.dia │ │ │ │ │ │ │ ├── RCTLinking-all-non-framework-target-headers.hmap │ │ │ │ │ │ │ ├── RCTLinking-all-target-headers.hmap │ │ │ │ │ │ │ ├── RCTLinking-generated-files.hmap │ │ │ │ │ │ │ ├── RCTLinking-own-target-headers.hmap │ │ │ │ │ │ │ ├── RCTLinking-project-headers.hmap │ │ │ │ │ │ │ ├── RCTLinking.hmap │ │ │ │ │ │ │ └── dgph │ │ │ │ │ │ └── RCTNetwork.build │ │ │ │ │ │ └── Debug-iphonesimulator │ │ │ │ │ │ └── RCTNetwork.build │ │ │ │ │ │ ├── Objects-normal │ │ │ │ │ │ └── x86_64 │ │ │ │ │ │ │ └── RCTNetwork.LinkFileList │ │ │ │ │ │ ├── RCTNetwork-all-non-framework-target-headers.hmap │ │ │ │ │ │ ├── RCTNetwork-all-target-headers.hmap │ │ │ │ │ │ ├── RCTNetwork-generated-files.hmap │ │ │ │ │ │ ├── RCTNetwork-own-target-headers.hmap │ │ │ │ │ │ ├── RCTNetwork-project-headers.hmap │ │ │ │ │ │ ├── RCTNetwork.hmap │ │ │ │ │ │ └── dgph │ │ │ │ ├── ModuleCache │ │ │ │ │ ├── Session.modulevalidation │ │ │ │ │ ├── X4M7VRHEEETK │ │ │ │ │ │ ├── CFNetwork-N94D31PLFESQ.pcm │ │ │ │ │ │ ├── CFNetwork-N94D31PLFESQ.pcm.timestamp │ │ │ │ │ │ ├── CoreFoundation-3MOS9MZDR6J1P.pcm │ │ │ │ │ │ ├── CoreFoundation-3MOS9MZDR6J1P.pcm.timestamp │ │ │ │ │ │ ├── CoreGraphics-N94D31PLFESQ.pcm │ │ │ │ │ │ ├── CoreGraphics-N94D31PLFESQ.pcm.timestamp │ │ │ │ │ │ ├── CoreImage-N94D31PLFESQ.pcm │ │ │ │ │ │ ├── CoreImage-N94D31PLFESQ.pcm.timestamp │ │ │ │ │ │ ├── CoreText-N94D31PLFESQ.pcm │ │ │ │ │ │ ├── CoreText-N94D31PLFESQ.pcm.timestamp │ │ │ │ │ │ ├── CoreVideo-2LUXD6OZSQPF.pcm │ │ │ │ │ │ ├── CoreVideo-2LUXD6OZSQPF.pcm.timestamp │ │ │ │ │ │ ├── Darwin-N0EKDJGHFAYB.pcm │ │ │ │ │ │ ├── Darwin-N0EKDJGHFAYB.pcm.timestamp │ │ │ │ │ │ ├── Dispatch-2ZKKDUJ5RGF0S.pcm │ │ │ │ │ │ ├── Dispatch-2ZKKDUJ5RGF0S.pcm.timestamp │ │ │ │ │ │ ├── Foundation-2NNP27CGK7J4W.pcm │ │ │ │ │ │ ├── Foundation-2NNP27CGK7J4W.pcm.timestamp │ │ │ │ │ │ ├── ImageIO-N94D31PLFESQ.pcm │ │ │ │ │ │ ├── ImageIO-N94D31PLFESQ.pcm.timestamp │ │ │ │ │ │ ├── JavaScriptCore-N94D31PLFESQ.pcm │ │ │ │ │ │ ├── JavaScriptCore-N94D31PLFESQ.pcm.timestamp │ │ │ │ │ │ ├── MachO-1BMJAO5Q3NM3O.pcm │ │ │ │ │ │ ├── MachO-1BMJAO5Q3NM3O.pcm.timestamp │ │ │ │ │ │ ├── MobileCoreServices-N94D31PLFESQ.pcm │ │ │ │ │ │ ├── MobileCoreServices-N94D31PLFESQ.pcm.timestamp │ │ │ │ │ │ ├── ObjectiveC-1RQA2RIXJIE19.pcm │ │ │ │ │ │ ├── ObjectiveC-1RQA2RIXJIE19.pcm.timestamp │ │ │ │ │ │ ├── OpenGLES-JLMMBGEUW8IK.pcm │ │ │ │ │ │ ├── OpenGLES-JLMMBGEUW8IK.pcm.timestamp │ │ │ │ │ │ ├── QuartzCore-243GPM1WM5PQT.pcm │ │ │ │ │ │ ├── QuartzCore-243GPM1WM5PQT.pcm.timestamp │ │ │ │ │ │ ├── Security-T0W5HZGV3ZZ1.pcm │ │ │ │ │ │ ├── Security-T0W5HZGV3ZZ1.pcm.timestamp │ │ │ │ │ │ ├── UIKit-27PL4RA7HR3WK.pcm │ │ │ │ │ │ ├── UIKit-27PL4RA7HR3WK.pcm.timestamp │ │ │ │ │ │ ├── modules.idx │ │ │ │ │ │ ├── os-N0EKDJGHFAYB.pcm │ │ │ │ │ │ └── os-N0EKDJGHFAYB.pcm.timestamp │ │ │ │ │ └── modules.timestamp │ │ │ │ └── info.plist │ │ │ └── src-bac │ │ │ │ └── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── helloworld │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── proguard-rules.pro │ │ └── react.gradle │ ├── index.android.js │ ├── index.ios.js │ └── package.json ├── package.json ├── public ├── assets │ └── fileManager │ │ ├── cloudpanel.css │ │ ├── fileManager.js │ │ ├── icon │ │ ├── accdb.png │ │ ├── avi.png │ │ ├── bmp.png │ │ ├── btn_icon.gif │ │ ├── css.png │ │ ├── docx_mac.png │ │ ├── docx_win.png │ │ ├── eml.png │ │ ├── eps.png │ │ ├── fla.png │ │ ├── gif.png │ │ ├── html.png │ │ ├── icons.gif │ │ ├── ind.png │ │ ├── ini.png │ │ ├── jpeg.png │ │ ├── jsf.png │ │ ├── large_icon.png │ │ ├── midi.png │ │ ├── mov.png │ │ ├── mp3.png │ │ ├── mpeg.png │ │ ├── pdf.png │ │ ├── png.png │ │ ├── pptx_mac.png │ │ ├── pptx_win.png │ │ ├── proj.png │ │ ├── psd.png │ │ ├── pst.png │ │ ├── pub.png │ │ ├── rar.png │ │ ├── readme.png │ │ ├── settings.png │ │ ├── text.png │ │ ├── tiff.png │ │ ├── url.png │ │ ├── vsd.png │ │ ├── wav.png │ │ ├── wma.png │ │ ├── wmv.png │ │ ├── xlsx_mac.png │ │ ├── xlsx_win.png │ │ └── zip.png │ │ ├── style │ │ ├── fileManager.css │ │ ├── fileManager.less │ │ └── style.css │ │ └── templates │ │ └── Main.template.html ├── javascripts │ └── main.js └── stylesheets │ └── style.css ├── screenshot ├── Screen Shot 2016-02-17 at 6.31.26 PM.png ├── Screen Shot 2016-02-17 at 6.31.28 PM.png ├── Screen Shot 2016-02-17 at 6.31.37 PM.png └── Screen Shot 2016-02-17 at 6.31.38 PM.png ├── uploads ├── 16c31b8b8e17e327add370988aa89dea ├── 6145a07746bc65377b9a7d87e2cdda65 ├── 71cde446f4eed5721c83ec1a98741f1e ├── 7bf7616ab81c66ca8036c560f9951e8f ├── 95e7cd1145acafd5ca48ed316aa9ff5c ├── a2a31f14c5661127f623c77c78042915 ├── bab94413024d52a49e0b27f8256d225c ├── c3e88daadeb1e1bc86a36125e08a0488 ├── db6a03d8824a8c0c7e9d5464c4fe60ab └── faebe36a3564715048e4b36589b40560 └── views ├── error.jade ├── index.jade └── layout.jade /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "analytics": true, 3 | "directory": "bower_components" 4 | } 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS 2 | # =========== 3 | .DS_Store 4 | localCloudStore/ 5 | 6 | 7 | # Node and related ecosystem 8 | # ========================== 9 | node_modules/ 10 | 11 | bower_components/ 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 截图 2 | 查看screenshot 目录 3 | ![](http://jslab.oss-cn-hangzhou.aliyuncs.com/Screen%20Shot%202016-02-18%20at%203.08.52%20AM.png) 4 | #Usage 5 | 打开core/server/config/fileManager.config.js 可以进行bucket配置,容器根目录设置 6 | 7 | 默认的容器为根目录下localCloudStore 8 | 9 | bower install 10 | 11 | npm install 12 | 13 | npm start 14 | 15 | 然后在浏览器中打开http://localhost:3001/ 16 | 17 | #TODO 18 | 图片显示接口,可以让文件中的图片直接显示 19 | 20 | 文件下载接口 21 | 22 | #Service 配置 23 | 前台通过service和后端相应的api进行交互,每个service接口都应该遵循相应的规格,查看 <<服务器端接口配置>> 24 | 25 | # HTML 26 |
27 | 28 | 29 | # Javascript 30 | fileManager = $('#fileManager').fileManager({ 31 | 32 | //配置服务 33 | Service: [{ 34 | 35 | // 服务名称 36 | serviceName: 'local', 37 | 38 | // 服务的域 39 | server: 'http://localhost:3000', 40 | 41 | listBuckets: { 42 | method: 'GET', 43 | endpoint: '', 44 | }, 45 | 46 | listFolders: { 47 | method: 'GET', 48 | endpoint: '', 49 | }, 50 | 51 | listObjects: { 52 | method: 'GET', 53 | endpoint: '', 54 | }, 55 | 56 | createFolder: { 57 | method: 'POST', 58 | endpoint: '' 59 | }, 60 | 61 | deleteObject: { 62 | method: 'DELETE', 63 | endpoint: '' 64 | }, 65 | 66 | reNameObject: { 67 | method: 'PUT', 68 | endpoint: '' 69 | }, 70 | 71 | mvObject: { 72 | method: 'POST', 73 | endpoint: '/api/localCloud/object' 74 | } 75 | }], 76 | 77 | // 78 | Title: 'Greate Media', 79 | }); 80 | 81 | #服务器端接口配置 82 | 83 | ####createFolder 创建目录 84 | 85 | 请求方法: Post 86 | Request Body: { 87 | bucket: 88 | key: 89 | Addition:[] 90 | newFolderName: 91 | } 92 | 93 | 返回结果: { 94 | newFOlderKey: 新目录的key 95 | } 96 | 97 | 98 | ####reNameObject 修改objcet的名称(可以是文件夹,也可以是文件名) 99 | 100 | 请求方法: PUT 101 | Request Body: { 102 | bucket: 103 | key: 104 | fromName: 105 | toName: 106 | Addition:[] 107 | } 108 | 109 | 返回结果: { 110 | newKey: 111 | } 112 | 113 | ####deleteObject 删除objcet(可以是文件夹, 也可以是文件名) 114 | 可以在服务器端设置删除模式,如果为strict则会强行删除目录,即便目录不为空(使用rimraf-promise模块) 115 | 116 | 如果为normal则调用fs.rmdir,如果目录不为空,则会报错 117 | 118 | 请求方法: DELETE 119 | Request Body: { 120 | bucket: 121 | key: 122 | } 123 | 124 | 返回结果: 'ok' 125 | 126 | ####mvObject 移动Object 127 | toKey 必须为目录, 128 | fromKey 可以为文件也可以为目录 129 | 130 | 请求方法: POST 131 | Request Body: { 132 | bucket: 133 | fromKey: 134 | toKey 135 | } 136 | 137 | 返回结果 { 138 | toNewKey: // 新的fromKey 139 | } 140 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | path = require('path'), 3 | favicon = require('serve-favicon'), 4 | logger = require('morgan'), 5 | cookieParser = require('cookie-parser'), 6 | bodyParser = require('body-parser'), 7 | multer = require('multer') 8 | 9 | routes = require('./core/server/routes'), 10 | errors = require('./core/server/errors'), 11 | 12 | app = express(); 13 | 14 | // view engine setup 15 | app.set('views', path.join(__dirname, 'views')); 16 | app.set('view engine', 'jade'); 17 | 18 | // uncomment after placing your favicon in /public 19 | //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 20 | app.use(logger('dev')); 21 | app.use(bodyParser.json()); 22 | app.use(bodyParser.urlencoded({ extended: false })); 23 | app.use(cookieParser()); 24 | 25 | 26 | app.use(express.static(path.join(__dirname, 'public'))); 27 | app.use(express.static(path.join(__dirname, 'bower_components'))); 28 | 29 | app.use('/', routes); 30 | 31 | // catch 404 and forward to error handler 32 | app.use(function(req, res, next) { 33 | var err = new Error('Not Found'); 34 | err.status = 404; 35 | next(err); 36 | }); 37 | 38 | 39 | // Error handler 40 | app.use(function(err, req, res, next) { 41 | if(!err) return next(); 42 | errors.handleAPIError(err, req, res, next); 43 | }); 44 | 45 | 46 | module.exports = app; 47 | -------------------------------------------------------------------------------- /bin/www: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * Module dependencies. 5 | */ 6 | 7 | var app = require('../app'); 8 | var debug = require('debug')('myapp:server'); 9 | var http = require('http'); 10 | 11 | /** 12 | * Get port from environment and store in Express. 13 | */ 14 | 15 | var port = normalizePort(process.env.PORT || '3001'); 16 | app.set('port', port); 17 | 18 | /** 19 | * Create HTTP server. 20 | */ 21 | 22 | var server = http.createServer(app); 23 | 24 | /** 25 | * Listen on provided port, on all network interfaces. 26 | */ 27 | 28 | server.listen(port); 29 | server.on('error', onError); 30 | server.on('listening', onListening); 31 | 32 | /** 33 | * Normalize a port into a number, string, or false. 34 | */ 35 | 36 | function normalizePort(val) { 37 | var port = parseInt(val, 10); 38 | 39 | if (isNaN(port)) { 40 | // named pipe 41 | return val; 42 | } 43 | 44 | if (port >= 0) { 45 | // port number 46 | return port; 47 | } 48 | 49 | return false; 50 | } 51 | 52 | /** 53 | * Event listener for HTTP server "error" event. 54 | */ 55 | 56 | function onError(error) { 57 | if (error.syscall !== 'listen') { 58 | throw error; 59 | } 60 | 61 | var bind = typeof port === 'string' 62 | ? 'Pipe ' + port 63 | : 'Port ' + port; 64 | 65 | // handle specific listen errors with friendly messages 66 | switch (error.code) { 67 | case 'EACCES': 68 | console.error(bind + ' requires elevated privileges'); 69 | process.exit(1); 70 | break; 71 | case 'EADDRINUSE': 72 | console.error(bind + ' is already in use'); 73 | process.exit(1); 74 | break; 75 | default: 76 | throw error; 77 | } 78 | } 79 | 80 | /** 81 | * Event listener for HTTP server "listening" event. 82 | */ 83 | 84 | function onListening() { 85 | var addr = server.address(); 86 | var bind = typeof addr === 'string' 87 | ? 'pipe ' + addr 88 | : 'port ' + addr.port; 89 | debug('Listening on ' + bind); 90 | } 91 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cloudPanel", 3 | "version": "0.0.0", 4 | "directory": "bower_components", 5 | "description": "cloudPanel can manage all the could for you", 6 | "dependencies": { 7 | "jquery": "~2.2.0", 8 | "jquery-ui": "~1.11.4", 9 | "underscore": "~1.8.3", 10 | "jquery-tmpl": "*", 11 | "jsrender": "^0.9.72" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/front/README.md: -------------------------------------------------------------------------------- 1 | 添加前台代码在此 2 | -------------------------------------------------------------------------------- /core/server/config/aliyuOss.config.js: -------------------------------------------------------------------------------- 1 | var path = require('path'), 2 | ALY = require('aliyun-sdk'), 3 | ALYAccount = require('./aliyunAccount'), 4 | aliyunOssSetting = []; 5 | 6 | if (!ALYAccount) { 7 | console.error('please set aliyun Account information'); 8 | process.exit(-1); 9 | } 10 | 11 | if (!ALYAccount.endpoint || ALYAccount.endpoint.length <= 0) { 12 | console.error('endpoint can not be empty'); 13 | } 14 | 15 | for (var i = 0; i < ALYAccount.endpoint.length ; i++ ){ 16 | aliyunOssSetting[ALYAccount.endpoint[i]] = new ALY.OSS({ 17 | accessKeyId: ALYAccount.accessKeyId, 18 | secretAccessKey: ALYAccount.secretAccessKey, 19 | securityToken: '', 20 | endpoint: ALYAccount.endpoint[i], 21 | apiVersion: '2013-10-15' 22 | }); 23 | } 24 | 25 | module.exports = { aliyunOssSetting: aliyunOssSetting }; 26 | -------------------------------------------------------------------------------- /core/server/config/aliyunAccount.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | accessKeyId: '', 3 | secretAccessKey: '', 4 | securityToken: '', 5 | endpoint: [ 6 | 'http://oss-cn-hangzhou.aliyuncs.com', 7 | 'http://oss-cn-qingdao.aliyuncs.com', 8 | 'http://oss-cn-shenzhen.aliyuncs.com' 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /core/server/config/fileManager.config.js: -------------------------------------------------------------------------------- 1 | var path = require('path'), 2 | localCloudSettings; 3 | 4 | // 本地云设置 ,bucket由服务器定义 5 | localCloudSettings = { 6 | 7 | // 域 8 | domain: 'http://localhost:3001/', 9 | 10 | // 网站的根路径 11 | rootPath: path.join(path.resolve(), 'localCloudStore'), 12 | 13 | // 允许返回的文件格式 14 | // 如果为空则返回所有文件 15 | extensionWhiteList: [ 16 | // 'jpg', 17 | // 'jpeg', 18 | // 'png', 19 | // 'txt', 20 | // 'c' 21 | ], 22 | 23 | // 文件最大上传大小, 默认为5MB 24 | maxUploadSize: 5 * 1024 * 1024, 25 | 26 | // 定义bucket 27 | buckets: [{ 28 | path: '/Bucket1', //相对于网站根目录的路径 29 | name: 'bucket1' 30 | }, { 31 | path: '/Bucket2', 32 | name: 'bucket2', 33 | }, { 34 | path: '/Bucket3', 35 | name: 'bucket3' 36 | }], 37 | 38 | // 是否显示隐藏文件 39 | showHidden: false, 40 | 41 | // 文件权限 42 | mode: '0755', 43 | 44 | // 目录删除模式 45 | // strict 强制删除模式 尝试递归删除 46 | // normal 普通删除模式 调用rmdir 47 | deleteMode: 'strict' // 强行删除模式,调用系统命令 48 | } 49 | 50 | module.exports = {localCloudSettings: localCloudSettings}; 51 | -------------------------------------------------------------------------------- /core/server/config/index.js: -------------------------------------------------------------------------------- 1 | var _ = require('lodash'), 2 | config = {}; 3 | // value key 4 | _.each(['fileManager.config', 'aliyuOss.config'], function(c) { 5 | _.extend(config, require('./' + c)); 6 | }); 7 | 8 | 9 | module.exports = config; 10 | -------------------------------------------------------------------------------- /core/server/controllers/aliyunOss.controller.js: -------------------------------------------------------------------------------- 1 | var aliyunOss = require('../models/aliyunOss.model'), 2 | Promise = require('bluebird'), 3 | pipeline = require('../utils/pipeline'), 4 | aliyunOssController; 5 | 6 | aliyunOssController = { 7 | listBuckets: function listBuckets(options) { 8 | function doTask(options) { 9 | return aliyunOss.listBuckets(options); 10 | } 11 | // can add more function into pipeline 12 | return pipeline([doTask], options).then(function(buckets) { 13 | return { 14 | buckets: buckets, 15 | count: buckets.length 16 | } 17 | }); 18 | }, 19 | listObjects: function listObjects(options) { 20 | function doTask(options) { 21 | return aliyunOss.listObjects(options); 22 | } 23 | 24 | return pipeline([doTask], options).then(function(objects) { 25 | return objects; 26 | }); 27 | }, 28 | }; 29 | module.exports = aliyunOssController; 30 | -------------------------------------------------------------------------------- /core/server/controllers/localCloud.controller.js: -------------------------------------------------------------------------------- 1 | var localCloudModel = require('../models/localCloud.model'), 2 | Promise = require('bluebird'), 3 | pipeline = require('../utils/pipeline'), 4 | localCloudController; 5 | 6 | localCloudController = { 7 | listBuckets: function listBuckets(options) { 8 | function doTask(options) { 9 | return localCloudModel.listBuckets(options); 10 | } 11 | // can add more function into pipeline 12 | return pipeline([doTask], options).then(function(buckets) { 13 | return { 14 | buckets: buckets, 15 | count: buckets.length 16 | } 17 | }); 18 | }, 19 | 20 | listFolders: function listFolders(options) { 21 | function doTask(options) { 22 | return localCloudModel.listFolders(options); 23 | } 24 | return pipeline([doTask], options).then(function(folders){ 25 | return { 26 | folders: folders, 27 | count: folders.length 28 | } 29 | }); 30 | }, 31 | 32 | listObjects: function listObjects(options) { 33 | function doTask(options) { 34 | return localCloudModel.listObjects(options); 35 | } 36 | 37 | return pipeline([doTask], options).then(function(objects) { 38 | return objects; 39 | }); 40 | }, 41 | 42 | addFolder: function addFolder(object, options) { 43 | function doTask(object, options) { 44 | return localCloudModel.addFolder(object, options); 45 | } 46 | 47 | return pipeline([doTask], object, options).then(function(newFOlderKey) { 48 | return {newFOlderKey: newFOlderKey}; 49 | }); 50 | }, 51 | 52 | reNameObject: function reNameObject(object, options) { 53 | function doTask(object, options) { 54 | return localCloudModel.reNameObject(object, options); 55 | } 56 | return pipeline([doTask], object, options).then(function(newKey) { 57 | return {newKey: newKey}; 58 | }); 59 | }, 60 | 61 | deleteObject: function deleteObject(object, options) { 62 | function doTask(object, options) { 63 | return localCloudModel.deleteObject(object, options); 64 | } 65 | return pipeline([doTask], object, options).then(function() { 66 | return 'ok'; 67 | }); 68 | }, 69 | 70 | mvObject: function mvObject(object, options) { 71 | function doTask(object, options) { 72 | return localCloudModel.mvObject(object, options); 73 | } 74 | return pipeline([doTask], object, options).then(function(toNewKey) { 75 | return {toNewKey: toNewKey}; 76 | }); 77 | }, 78 | 79 | uploadFile: function uploadFile(object, options) { 80 | function doTask(object, options) { 81 | return localCloudModel.uploadFile(object, options); 82 | } 83 | return pipeline([doTask], object, options).then(function(newFileKey) { 84 | return {newFileKey: newFileKey}; 85 | }); 86 | }, 87 | 88 | downloadFile: function downloadFile(req, res) { 89 | var options = req.query; 90 | localCloudModel.downloadFile(options, req, res); 91 | } 92 | }; 93 | module.exports = localCloudController; 94 | -------------------------------------------------------------------------------- /core/server/errors/bad-request-error.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function BadRequestError(message) { 4 | this.message = message; 5 | this.stack = new Error().stack; 6 | this.code = 400; 7 | this.errorType = this.name; 8 | } 9 | 10 | BadRequestError.prototype = Object.create(Error.prototype); 11 | BadRequestError.prototype.name = 'BadRequestError'; 12 | 13 | module.exports = BadRequestError; 14 | -------------------------------------------------------------------------------- /core/server/errors/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var _ = require('lodash'), 3 | path = require('path'), 4 | Promise = require('bluebird'), 5 | BadRequestError = require('./bad-request-error'), 6 | InternalServerError = require('./internal-server-error'), 7 | NotFoundError = require('./not-found-error'), 8 | ValidationError = require('./validation-error'), 9 | 10 | errors; 11 | 12 | errors = { 13 | formatHttpErrors: function formatHttpErrors(error) { 14 | var statusCode = 500, 15 | errors = []; 16 | if(!_.isArray(error)) { 17 | error = [].concat(error); 18 | } 19 | _.each(error, function each(errorItem) { 20 | var errorContent = {}; 21 | 22 | statusCode = errorItem.code || 500; 23 | errorContent.message = _.isString(errorItem) ? errorItem : 24 | (_.isObject(errorItem) ? errorItem.message : 'UnKnow API'); 25 | errorContent.errorType = errorItem.errorType || 'InternalServerError'; 26 | errors.push(errorContent); 27 | }); 28 | 29 | return { 30 | errors: errors, 31 | statusCode: statusCode 32 | } 33 | }, 34 | handleAPIError: function handleAPIError(err, req, res, next) { 35 | var httpErrors = this.formatHttpErrors(err); 36 | if(err.stack) console.log(err.stack); 37 | res.status(httpErrors.statusCode).json({ 38 | errors: httpErrors.errors 39 | }); 40 | } 41 | }; 42 | 43 | _.each([ 44 | 'formatHttpErrors', 45 | 'handleAPIError' 46 | ], function(funcName) { 47 | errors[funcName] = errors[funcName].bind(errors); 48 | }); 49 | 50 | module.exports = errors; 51 | module.exports.BadRequestError = BadRequestError; 52 | module.exports.InternalServerError = InternalServerError; 53 | module.exports.NotFoundError = NotFoundError; 54 | module.exports.ValidationError = ValidationError; 55 | -------------------------------------------------------------------------------- /core/server/errors/internal-server-error.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function InternalServerError(message) { 4 | this.message = message; 5 | this.stack = new Error().stack; 6 | this.code = 500; 7 | this.errorType = this.name; 8 | } 9 | 10 | InternalServerError.prototype = Object.create(Error.prototype); 11 | InternalServerError.prototype.name = 'InternalServerError'; 12 | 13 | module.exports = InternalServerError; 14 | -------------------------------------------------------------------------------- /core/server/errors/not-found-error.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | function NotFoundError(message) { 3 | this.message = message; 4 | this.stack = new Error().stack; 5 | this.code = 404; 6 | this.errorType = this.name; 7 | } 8 | 9 | NotFoundError.prototype = Object.create(Error.prototype); 10 | NotFoundError.prototype.name = 'NotFoundError'; 11 | 12 | module.exports = NotFoundError; 13 | -------------------------------------------------------------------------------- /core/server/errors/validation-error.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function ValidationError(message, offendingProperty) { 4 | this.message = message; 5 | this.stack = (new Error()).stack; 6 | this.code = 422; 7 | if (offendingProperty) { 8 | this.property = offendingProperty; 9 | } 10 | this.errorType = this.name; 11 | } 12 | 13 | ValidationError.prototype = Object.create(Error.prototype); 14 | ValidationError.prototype.name = 'ValidationError'; 15 | 16 | module.exports = ValidationError; 17 | -------------------------------------------------------------------------------- /core/server/models/aliyunOss.model.js: -------------------------------------------------------------------------------- 1 | var Promise = require('bluebird'), 2 | fs = Promise.promisifyAll(require('fs')), 3 | async = require('async'), 4 | _ = require('lodash'), 5 | path = require('path'), 6 | config = require('../config'), 7 | errors = require('../errors'), 8 | rimraf = require('rimraf'), 9 | rirmafPromise = require('rimraf-promise'), 10 | 11 | localCloud; 12 | 13 | // 格式化文件大小格式 14 | function formatFileSize(size) { 15 | var unit = ['Byte', 'KB', 'GB', 'TB'], 16 | i = 0, 17 | filesize; 18 | while(size >= 1024) { 19 | size = size / 1024; 20 | i++; 21 | } 22 | filesize = size + unit[i]; 23 | return size.toFixed(2) + unit[i]; 24 | } 25 | 26 | function validateName(object, name) { 27 | if(_.isEmpty(object[name])) 28 | return Promise.reject(name + ' can not be empty'); 29 | if(!_.isString(object[name])) 30 | return Promise.reject(name + ' must be a string'); 31 | if(!/^[^\\/?%*:|"<>\.]+$/.test(object[name])) 32 | return Promise.reject(object[name] + ' is not a valid name'); 33 | return Promise.resolve(); 34 | } 35 | 36 | function deleteFolderRecursive(delpath) { 37 | if(fs.existsSync(delpath)) { 38 | fs.readdirSync(delpath).forEach(function(file, index){ 39 | var curPath = path.join(delpath, file); 40 | if(fs.statSync(curPath).isDirectory()) { 41 | deleteFolderRecursive(curPath); 42 | } else { 43 | fs.unlinkSync(curPath); 44 | } 45 | }); 46 | fs.rmdirSync(path); 47 | } 48 | return true; 49 | } 50 | 51 | // LocalCloud = function LocalCloud(settings) { 52 | // var buckets = settings.buckets, 53 | // bucket, 54 | // path, 55 | // i, 56 | // len; 57 | // if(!_.isArray(buckets)) 58 | // buckets = []; 59 | // this.settings = settings; 60 | // this.buckets = {}; 61 | // if(buckets) { 62 | // for(i = 0, len = buckets.length; i < len; i++) { 63 | // bucket = buckets[i]; 64 | // path = settings.rootPath + bucket.path; 65 | // var stat = fs.statSync(path); 66 | // if(!stat.isDirectory()) 67 | // throw new Error(path + 'is not a directory'); 68 | // 69 | // // 注册bucket 70 | // this.buckets[bucket.name] = { 71 | // Endpoint: path, 72 | // Name: bucket.name, 73 | // path: path, 74 | // relativePath: bucket.path 75 | // }; 76 | // } 77 | // } 78 | // }; 79 | // 80 | // // 遍历params来查找options的参数的合法性 81 | // LocalCloud.prototype.validateOptions = function validateOptions(options, params, keyType) { 82 | // if(_.isString(params)) params = [params]; 83 | // if(!_.isArray(params)) params = []; 84 | // for(var i = 0, len = params.length; i < len; i++) { 85 | // var param = params[i]; 86 | // // 检查参数是否存在 87 | // if(!options[param] || _.isEmpty(options[param])) { 88 | // return Promise.reject(new errors.ValidationError(param + 'is required, can\'t be empty')); 89 | // } 90 | // 91 | // // check if the bucket is illegal 92 | // if(param === 'bucket') { 93 | // var bucket_find = false; 94 | // _.forEach(this.buckets, function(bucket, name) { 95 | // if(name === options.bucket) { 96 | // options.bucket = bucket; 97 | // bucket_find = true; 98 | // } 99 | // }); 100 | // if(!bucket_find) return Promise.reject(new errors.ValidationError(options.bucket + 'is not existed')); 101 | // } 102 | // 103 | // // check if the key is illegal 104 | // // key can be folder or a file 105 | // if(param === 'key') { 106 | // // key 的范围只能在rootPath 下 107 | // var keyPath = path.join(options.bucket.path, options.key); 108 | // console.log('keyPath', keyPath); 109 | // if(!(new RegExp("^" + this.settings.rootPath).test(keyPath))) { 110 | // return Promise.reject(new errors.ValidationError('can not reach that place: '+keyPath)); 111 | // } 112 | // options.keyPath = keyPath; 113 | // if(!fs.existsSync(keyPath)) { 114 | // return Promise.reject(new errors.NotFoundError(keyPath + ' is not exist')); 115 | // } 116 | // 117 | // if(keyType === 'folder' && !fs.statSync(keyPath).isDirectory()) { 118 | // return Promise.reject(new errors.BadRequestError(keyPath + ' is not a folder')); 119 | // } else if(keyType === 'object') { 120 | // // 121 | // } else { 122 | // options.stat = fs.statSync(keyPath); 123 | // } 124 | // return Promise.resolve(options); 125 | // } 126 | // } 127 | // return Promise.resolve(options); 128 | // } 129 | // 130 | // LocalCloud.prototype.listBuckets = function listBuckets() { 131 | // var buckets = []; 132 | // _.forEach(this.buckets, function(bucket, name) { 133 | // buckets.push({ 134 | // Name: name, 135 | // // 如果为aliyun oss 则可将多余数据放入Addition中, 每次请求的时候提交 136 | // Addition: { 137 | // Endpoint: bucket.Endpoint 138 | // } 139 | // }); 140 | // }); 141 | // return Promise.resolve(buckets); 142 | // }; 143 | // 144 | // LocalCloud.prototype.listFolders = function listFolders(options) { 145 | // var params = ['bucket', 'key'],folders=[]; 146 | // console.log(options); 147 | // return this.validateOptions(options, params, 'folder') 148 | // .then(function then(options) { 149 | // return fs.readdirAsync(options.keyPath) 150 | // .then(function(files){ 151 | // _.forEach(files, function(file) { 152 | // if(fs.statSync(path.join(options.keyPath, file)).isDirectory()) { 153 | // folders.push({ 154 | // Key: path.join(options.key, file, '/'), 155 | // Name: file, 156 | // }); 157 | // } 158 | // }); 159 | // return folders; 160 | // }); 161 | // }); 162 | // } 163 | // 164 | // LocalCloud.prototype.listObjects = function listObjects(options) { 165 | // var params = ['bucket', 'key'], 166 | // stat, 167 | // _this = this; 168 | // return this.validateOptions(options, params, 'folder') 169 | // .then(function then(options) { 170 | // return fs.readdirAsync(options.keyPath) 171 | // .then(function(files) { 172 | // var objects = { 173 | // files: [], 174 | // folders: [] 175 | // }; 176 | // _.forEach(files, function(file) { 177 | // if(!_this.settings.showHidden && /^\./.test(file)) 178 | // return; 179 | // stat = fs.statSync(path.join(options.keyPath, file)); 180 | // if(stat.isDirectory()) { 181 | // objects.folders.push({ 182 | // Key: path.join(options.key, file, '/'), 183 | // Name: file, 184 | // LastModified: stat.mtime 185 | // }); 186 | // } else if(stat.isFile()) { 187 | // objects.files.push({ 188 | // Key: path.join(options.key, file), 189 | // Name: file, 190 | // Size: stat.size, 191 | // LastModified: stat.mtime 192 | // }); 193 | // } 194 | // }); 195 | // return objects; 196 | // }); 197 | // }); 198 | // }; 199 | // 200 | // LocalCloud.prototype.addFolder = function addFolder(object, options) { 201 | // var params = ['bucket', 'key', 'newFolderName'], newFolderPath, _this = this; 202 | // return this.validateOptions(object, params, 'folder') 203 | // .then(function then(object) { 204 | // return validateName(object, 'newFolderName') 205 | // .then(function(){ 206 | // // 开始创建 207 | // newFolderPath = path.join(object.keyPath, object['newFolderName']); 208 | // return fs.mkdirAsync(newFolderPath, _this.settings.mode) 209 | // .then(function() { 210 | // return path.join(object.key, object['newFolderName'], '/'); 211 | // }); 212 | // }); 213 | // }); 214 | // }; 215 | // 216 | // LocalCloud.prototype.deleteObject = function deleteObject(object) { 217 | // var params = ['bucket', 'key'], _this = this; 218 | // // options = options || {}; 219 | // // options.keys = object.key || ''; 220 | // return this.validateOptions(object, params) 221 | // .then(function(object) { 222 | // if(_.isEmpty(object.key) || !_.isString(object.key)) 223 | // return Promise.reject(new errors.ValidationError('Invalid key')); 224 | // // 开始删除keys 225 | // if(object.stat && object.stat.isDirectory()) { 226 | // if(_this.settings.deleteMode === 'strict') { 227 | // // delete in strict mode 228 | // return rirmafPromise(object.keyPath); 229 | // } else if(_this.settings.deleteMode === 'normal') { 230 | // // delete in normal mode 231 | // return fs.rmdirAsync(object.keyPath); 232 | // } 233 | // } else if(object.stat && object.stat.isFile()) { 234 | // // we are tryint to delete a file 235 | // return rirmafPromise(object.keyPath); 236 | // } else { 237 | // // other kind of fill not allow to delte 238 | // return Promise.reject('forbidden'); 239 | // } 240 | // }); 241 | // } 242 | // 243 | // LocalCloud.prototype.reNameObject = function reNameObject(object, options) { 244 | // var params = ['bucket', 'key', 'fromName', 'toName'], _this = this; 245 | // return this.validateOptions(object, params) 246 | // .then(function(object) { 247 | // var fromKey = path.join(object.keyPath, object.fromName), 248 | // toKey = path.join(object.keyPath, object.toName); 249 | // return fs.renameAsync(fromKey, toKey) 250 | // .then(function() { 251 | // return path.join(object.key, object.toName); 252 | // }); 253 | // }); 254 | // } 255 | // 256 | // LocalCloud.prototype.uploadFile = function uploadFile(object, options) { 257 | // var params = ['bucket', 'key', 'path'], _this = this; 258 | // return this.validateOptions(object, params) 259 | // .then(function(object) { 260 | // return fs.renameAsync(path.resolve(object.path), path.join(object.keyPath, object.originalname)) 261 | // .then(function() { 262 | // return path.join(object.key, object.originalname); 263 | // }); 264 | // }); 265 | // }; 266 | // 267 | // LocalCloud.prototype.mvObject = function mvObject(object, options) { 268 | // var params = ['bucket', 'toKey', 'fromKey'], 269 | // toKeyPath, 270 | // fromKeyPath, 271 | // toKeyStat, 272 | // fromKeyStat, 273 | // fromKeyBase 274 | // _this = this; 275 | // return this.validateOptions(object, params) 276 | // .then(function(object) { 277 | // toKeyPath = path.join(object.bucket.path, object.toKey); 278 | // if(!(new RegExp("^" + _this.settings.rootPath).test(toKeyPath))) { 279 | // return Promise.reject(new errors.ValidationError('can not reach that place: '+toKeyPath)); 280 | // } 281 | // 282 | // fromKeyPath = path.join(object.bucket.path, object.fromKey); 283 | // if(!(new RegExp("^" + _this.settings.rootPath).test(fromKeyPath))) { 284 | // return Promise.reject(new errors.ValidationError('can not reach that place: '+toKeyPath)); 285 | // } 286 | // 287 | // if(!fs.existsSync(toKeyPath)) { 288 | // return Promise.reject(new errors.ValidationError(toKeyPath + ' is not exist')); 289 | // } else { 290 | // toKeyStat = fs.statSync(toKeyPath); 291 | // if(!toKeyStat.isDirectory()) { 292 | // return Promise.reject(new erors.ValidationError(toKeyPath + ' must be a directory')); 293 | // } 294 | // } 295 | // 296 | // if(!fs.existsSync(fromKeyPath)) { 297 | // return Promise.reject(new errors.ValidationError(fromKeyPath + 'is not exist')); 298 | // } else { 299 | // fromKeyStat = fs.statSync(fromKeyPath); 300 | // fromKeyBase = path.basename(fromKeyPath); 301 | // } 302 | // 303 | // toKeyPath = path.join(toKeyPath, fromKeyBase); 304 | // return fs.renameAsync(fromKeyPath, toKeyPath) 305 | // .then(function() { 306 | // return toKeyPath; 307 | // }); 308 | // 309 | // 310 | // }); 311 | // } 312 | 313 | function aliyunOss(settings) { 314 | this.aliyunOssSetting = settings; 315 | console.log(typeof this.aliyunOssSetting); 316 | } 317 | 318 | aliyunOss.prototype.listBuckets = function listBuckets(options) { 319 | var tasks = [] ,aliyunEndpoint; 320 | for( endpoint in config.aliyunOssSetting) { 321 | // 默认取第一个然后直接跳出 322 | aliyunEndpoint = config.aliyunOssSetting[endpoint]; 323 | var listBuckets = Promise.promisify(aliyunEndpoint.listBuckets); 324 | aliyunEndpoint.listBuckets = listBuckets; 325 | break; 326 | } 327 | return aliyunEndpoint.listBuckets().then(function(result) { 328 | var buckets = []; 329 | _.forEach(result.Buckets, function(bucket) { 330 | buckets.push({ 331 | Name: bucket.Name, 332 | Addition: bucket 333 | }); 334 | }); 335 | return buckets; 336 | }); 337 | }; 338 | 339 | aliyunOss.prototype.listObjects = function listObjects(options) { 340 | var aliyunEndpoint = this.aliyunOssSetting['http://' + options.Addition.ExtranetEndpoint]; 341 | // for(fn in aliyunEndpoint){ 342 | // console.log(aliyunEndpoint)); 343 | // } 344 | // console.log(aliyunEndpoint[listObjects].toString()); 345 | aliyunEndpoint.listObjects = Promise.promisify(aliyunEndpoint.listObjects); 346 | var dataGetter; 347 | if (options.key === '/') { 348 | dataGetter = aliyunEndpoint.listObjects({ 349 | Bucket: options.bucket, 350 | Delimiter: '/' 351 | }); 352 | } else { 353 | dataGetter = aliyunEndpoint.listObjects({ 354 | Bucket: options.bucket, 355 | Prefix: options.key, 356 | Delimiter: '/' 357 | }); 358 | } 359 | return dataGetter.then(function(result) { 360 | console.log(result); 361 | var objects = { 362 | files: [], 363 | folders: [] 364 | }; 365 | _.each(result.Contents, function(object) { 366 | object.Name = object.Key; 367 | object.address = 'http://' + options.bucket + '.'+options.Addition.ExtranetEndpoint + '/' +object.Key; 368 | objects.files.push(object); 369 | }); 370 | _.each(result.CommonPrefixes, function(object){ 371 | object.Name = object.Prefix; 372 | object.Key = object.Prefix; 373 | objects.folders.push(object); 374 | }); 375 | return objects; 376 | }); 377 | } 378 | module.exports = new aliyunOss(config.aliyunOssSetting); 379 | -------------------------------------------------------------------------------- /core/server/models/localCloud.model.js: -------------------------------------------------------------------------------- 1 | var Promise = require('bluebird'), 2 | fs = Promise.promisifyAll(require('fs')), 3 | _ = require('lodash'), 4 | path = require('path'), 5 | config = require('../config'), 6 | errors = require('../errors'), 7 | rimraf = require('rimraf'), 8 | rirmafPromise = require('rimraf-promise'), 9 | 10 | localCloud; 11 | 12 | // 格式化文件大小格式 13 | function formatFileSize(size) { 14 | var unit = ['Byte', 'KB', 'GB', 'TB'], 15 | i = 0, 16 | filesize; 17 | while(size >= 1024) { 18 | size = size / 1024; 19 | i++; 20 | } 21 | filesize = size + unit[i]; 22 | return size.toFixed(2) + unit[i]; 23 | } 24 | 25 | function validateName(object, name) { 26 | if(_.isEmpty(object[name])) 27 | return Promise.reject(name + ' can not be empty'); 28 | if(!_.isString(object[name])) 29 | return Promise.reject(name + ' must be a string'); 30 | if(!/^[^\\/?%*:|"<>\.]+$/.test(object[name])) 31 | return Promise.reject(object[name] + ' is not a valid name'); 32 | return Promise.resolve(); 33 | } 34 | 35 | function deleteFolderRecursive(delpath) { 36 | if(fs.existsSync(delpath)) { 37 | fs.readdirSync(delpath).forEach(function(file, index){ 38 | var curPath = path.join(delpath, file); 39 | if(fs.statSync(curPath).isDirectory()) { 40 | deleteFolderRecursive(curPath); 41 | } else { 42 | fs.unlinkSync(curPath); 43 | } 44 | }); 45 | fs.rmdirSync(path); 46 | } 47 | return true; 48 | } 49 | 50 | LocalCloud = function LocalCloud(settings) { 51 | var buckets = settings.buckets, 52 | bucket, 53 | path, 54 | i, 55 | len; 56 | if(!_.isArray(buckets)) 57 | buckets = []; 58 | this.settings = settings; 59 | this.buckets = {}; 60 | if(buckets) { 61 | for(i = 0, len = buckets.length; i < len; i++) { 62 | bucket = buckets[i]; 63 | path = settings.rootPath + bucket.path; 64 | var stat = fs.statSync(path); 65 | if(!stat.isDirectory()) 66 | throw new Error(path + 'is not a directory'); 67 | 68 | // 注册bucket 69 | this.buckets[bucket.name] = { 70 | Endpoint: path, 71 | Name: bucket.name, 72 | path: path, 73 | relativePath: bucket.path 74 | }; 75 | } 76 | } 77 | }; 78 | 79 | // 遍历params来查找options的参数的合法性 80 | LocalCloud.prototype.validateOptions = function validateOptions(options, params, keyType) { 81 | if(_.isString(params)) params = [params]; 82 | if(!_.isArray(params)) params = []; 83 | for(var i = 0, len = params.length; i < len; i++) { 84 | var param = params[i]; 85 | // 检查参数是否存在 86 | if(!options[param] || _.isEmpty(options[param])) { 87 | return Promise.reject(new errors.ValidationError(param + 'is required, can\'t be empty')); 88 | } 89 | 90 | // check if the bucket is illegal 91 | if(param === 'bucket') { 92 | var bucket_find = false; 93 | _.forEach(this.buckets, function(bucket, name) { 94 | if(name === options.bucket) { 95 | options.bucket = bucket; 96 | bucket_find = true; 97 | } 98 | }); 99 | if(!bucket_find) return Promise.reject(new errors.ValidationError(options.bucket + 'is not existed')); 100 | } 101 | 102 | // check if the key is illegal 103 | // key can be folder or a file 104 | if(param === 'key') { 105 | // key 的范围只能在rootPath 下 106 | var keyPath = path.join(options.bucket.path, options.key); 107 | console.log('keyPath', keyPath); 108 | if(!(new RegExp("^" + this.settings.rootPath).test(keyPath))) { 109 | return Promise.reject(new errors.ValidationError('can not reach that place: '+keyPath)); 110 | } 111 | options.keyPath = keyPath; 112 | if(!fs.existsSync(keyPath)) { 113 | return Promise.reject(new errors.NotFoundError(keyPath + ' is not exist')); 114 | } 115 | 116 | if(keyType === 'folder' && !fs.statSync(keyPath).isDirectory()) { 117 | return Promise.reject(new errors.BadRequestError(keyPath + ' is not a folder')); 118 | } else if(keyType === 'object') { 119 | // 120 | } else { 121 | options.stat = fs.statSync(keyPath); 122 | } 123 | return Promise.resolve(options); 124 | } 125 | } 126 | return Promise.resolve(options); 127 | } 128 | 129 | LocalCloud.prototype.listBuckets = function listBuckets() { 130 | var buckets = []; 131 | _.forEach(this.buckets, function(bucket, name) { 132 | buckets.push({ 133 | Name: name, 134 | // 如果为aliyun oss 则可将多余数据放入Addition中, 每次请求的时候提交 135 | Addition: { 136 | Endpoint: '' 137 | } 138 | }); 139 | }); 140 | return Promise.resolve(buckets); 141 | }; 142 | 143 | LocalCloud.prototype.listFolders = function listFolders(options) { 144 | var params = ['bucket', 'key'],folders=[]; 145 | return this.validateOptions(options, params, 'folder') 146 | .then(function then(options) { 147 | return fs.readdirAsync(options.keyPath) 148 | .then(function(files){ 149 | _.forEach(files, function(file) { 150 | if(fs.statSync(path.join(options.keyPath, file)).isDirectory()) { 151 | folders.push({ 152 | Key: path.join(options.key, file, '/'), 153 | Name: file, 154 | }); 155 | } 156 | }); 157 | return folders; 158 | }); 159 | }); 160 | } 161 | 162 | LocalCloud.prototype.listObjects = function listObjects(options) { 163 | var params = ['bucket', 'key'], 164 | stat, 165 | _this = this; 166 | return this.validateOptions(options, params, 'folder') 167 | .then(function then(options) { 168 | return fs.readdirAsync(options.keyPath) 169 | .then(function(files) { 170 | var objects = { 171 | files: [], 172 | folders: [] 173 | }; 174 | _.forEach(files, function(file) { 175 | if(!_this.settings.showHidden && /^\./.test(file)) 176 | return; 177 | stat = fs.statSync(path.join(options.keyPath, file)); 178 | if(stat.isDirectory()) { 179 | objects.folders.push({ 180 | Key: path.join(options.key, file, '/'), 181 | Name: file, 182 | LastModified: stat.mtime 183 | }); 184 | } else if(stat.isFile()) { 185 | console.log(options); 186 | var address = '/api/localCloud/object?bucket=' + encodeURIComponent(options.bucket.Name); 187 | address += '&key=' + encodeURIComponent(path.join(options.key, file)); 188 | console.log(address); 189 | objects.files.push({ 190 | Key: path.join(options.key, file), 191 | Name: file, 192 | Size: stat.size, 193 | LastModified: stat.mtime, 194 | address: address 195 | }); 196 | } 197 | }); 198 | return objects; 199 | }); 200 | }); 201 | }; 202 | 203 | LocalCloud.prototype.addFolder = function addFolder(object, options) { 204 | var params = ['bucket', 'key', 'newFolderName'], newFolderPath, _this = this; 205 | return this.validateOptions(object, params, 'folder') 206 | .then(function then(object) { 207 | return validateName(object, 'newFolderName') 208 | .then(function(){ 209 | // 开始创建 210 | newFolderPath = path.join(object.keyPath, object['newFolderName']); 211 | return fs.mkdirAsync(newFolderPath, _this.settings.mode) 212 | .then(function() { 213 | return path.join(object.key, object['newFolderName'], '/'); 214 | }); 215 | }); 216 | }); 217 | }; 218 | 219 | LocalCloud.prototype.deleteObject = function deleteObject(object) { 220 | var params = ['bucket', 'key'], _this = this; 221 | // options = options || {}; 222 | // options.keys = object.key || ''; 223 | return this.validateOptions(object, params) 224 | .then(function(object) { 225 | if(_.isEmpty(object.key) || !_.isString(object.key)) 226 | return Promise.reject(new errors.ValidationError('Invalid key')); 227 | // 开始删除keys 228 | if(object.stat && object.stat.isDirectory()) { 229 | if(_this.settings.deleteMode === 'strict') { 230 | // delete in strict mode 231 | return rirmafPromise(object.keyPath); 232 | } else if(_this.settings.deleteMode === 'normal') { 233 | // delete in normal mode 234 | return fs.rmdirAsync(object.keyPath); 235 | } 236 | } else if(object.stat && object.stat.isFile()) { 237 | // we are tryint to delete a file 238 | return rirmafPromise(object.keyPath); 239 | } else { 240 | // other kind of fill not allow to delte 241 | return Promise.reject('forbidden'); 242 | } 243 | }); 244 | } 245 | 246 | LocalCloud.prototype.reNameObject = function reNameObject(object, options) { 247 | var params = ['bucket', 'key', 'fromName', 'toName'], _this = this; 248 | return this.validateOptions(object, params) 249 | .then(function(object) { 250 | var fromKey = path.join(object.keyPath, object.fromName), 251 | toKey = path.join(object.keyPath, object.toName); 252 | return fs.renameAsync(fromKey, toKey) 253 | .then(function() { 254 | return path.join(object.key, object.toName); 255 | }); 256 | }); 257 | } 258 | 259 | LocalCloud.prototype.uploadFile = function uploadFile(object, options) { 260 | var params = ['bucket', 'key', 'path'], _this = this; 261 | return this.validateOptions(object, params) 262 | .then(function(object) { 263 | return fs.renameAsync(path.resolve(object.path), path.join(object.keyPath, object.originalname)) 264 | .then(function() { 265 | return path.join(object.key, object.originalname); 266 | }); 267 | }); 268 | }; 269 | 270 | LocalCloud.prototype.mvObject = function mvObject(object, options) { 271 | var params = ['bucket', 'toKey', 'fromKey'], 272 | toKeyPath, 273 | fromKeyPath, 274 | toKeyStat, 275 | fromKeyStat, 276 | fromKeyBase 277 | _this = this; 278 | return this.validateOptions(object, params) 279 | .then(function(object) { 280 | toKeyPath = path.join(object.bucket.path, object.toKey); 281 | if(!(new RegExp("^" + _this.settings.rootPath).test(toKeyPath))) { 282 | return Promise.reject(new errors.ValidationError('can not reach that place: '+toKeyPath)); 283 | } 284 | 285 | fromKeyPath = path.join(object.bucket.path, object.fromKey); 286 | if(!(new RegExp("^" + _this.settings.rootPath).test(fromKeyPath))) { 287 | return Promise.reject(new errors.ValidationError('can not reach that place: '+toKeyPath)); 288 | } 289 | 290 | if(!fs.existsSync(toKeyPath)) { 291 | return Promise.reject(new errors.ValidationError(toKeyPath + ' is not exist')); 292 | } else { 293 | toKeyStat = fs.statSync(toKeyPath); 294 | if(!toKeyStat.isDirectory()) { 295 | return Promise.reject(new erors.ValidationError(toKeyPath + ' must be a directory')); 296 | } 297 | } 298 | 299 | if(!fs.existsSync(fromKeyPath)) { 300 | return Promise.reject(new errors.ValidationError(fromKeyPath + 'is not exist')); 301 | } else { 302 | fromKeyStat = fs.statSync(fromKeyPath); 303 | fromKeyBase = path.basename(fromKeyPath); 304 | } 305 | 306 | toKeyPath = path.join(toKeyPath, fromKeyBase); 307 | return fs.renameAsync(fromKeyPath, toKeyPath) 308 | .then(function() { 309 | return toKeyPath; 310 | }); 311 | 312 | 313 | }); 314 | } 315 | 316 | LocalCloud.prototype.downloadFile = function downloadFile(options, req, res) { 317 | var params = ['bucket', 'key'], _this = this; 318 | console.log(options); 319 | this.validateOptions(options, params) 320 | .then(function(options) { 321 | console.log(options.keyPath); 322 | res.download(options.keyPath); 323 | }); 324 | } 325 | module.exports = new LocalCloud(config.localCloudSettings); 326 | -------------------------------------------------------------------------------- /core/server/routes/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | router = express.Router(), 3 | _ = require('lodash'); 4 | 5 | // 加载各个路由 6 | _.each(['./localCloud'], function(r) { 7 | require(r)(router); 8 | }); 9 | 10 | /* GET home page. */ 11 | router.get('/', function(req, res, next) { 12 | res.render('index', { title: 'Express' }); 13 | }); 14 | 15 | module.exports = router; 16 | -------------------------------------------------------------------------------- /core/server/routes/localCloud.js: -------------------------------------------------------------------------------- 1 | var localCloud = require('../controllers/localCloud.controller'), 2 | aliyunOss = require('../controllers/aliyunOss.controller'), 3 | multer = require('multer'), 4 | upload = multer({dest: 'uploads/'}), 5 | apiHeader = require('../utils/header'); 6 | 7 | module.exports = function(router) { 8 | // create router here 9 | router.get('/api/localCloud/buckets', apiHeader.http(localCloud.listBuckets)); 10 | router.get('/api/localCloud/folders', apiHeader.http(localCloud.listFolders)); 11 | router.get('/api/localCloud/objects', apiHeader.http(localCloud.listObjects)); 12 | 13 | // 创建新目录 14 | router.post('/api/localCloud/folders', apiHeader.http(localCloud.addFolder)); 15 | 16 | // 删除文件或目录 17 | router.delete('/api/localCloud/object', apiHeader.http(localCloud.deleteObject)); 18 | 19 | // 重命名 文件或目录 20 | router.put('/api/localCloud/object', apiHeader.http(localCloud.reNameObject)); 21 | 22 | // 文件移动 23 | // toKey 必须为目录 24 | // fromkey 25 | router.post('/api/localCloud/object', apiHeader.http(localCloud.mvObject)); 26 | 27 | router.post('/api/localCloud/file',upload.single('file'), apiHeader.http(localCloud.uploadFile)); 28 | 29 | router.get('/api/localCloud/object', localCloud.downloadFile); 30 | router.get('/api/aliyunOss/buckets', apiHeader.http(aliyunOss.listBuckets)); 31 | router.get('/api/aliyunOss/objects', apiHeader.http(aliyunOss.listObjects)); 32 | // router.get('/api/aliyunOss/') 33 | }; 34 | -------------------------------------------------------------------------------- /core/server/utils/header.js: -------------------------------------------------------------------------------- 1 | var http, addHeaders, cacheInvalidationHeader, locationHeader, _ = require('lodash'); 2 | 3 | http = function http(apiMethod, keepReq, keepRes) { 4 | return function apiHandler(req, res, next) { 5 | var object = _.extend({}, req.file, req.body); 6 | options = _.extend({}, req.query, req.params); 7 | if(keepReq) 8 | options._req = req; 9 | if(keepRes) 10 | options._res = res; 11 | 12 | if(_.isEmpty(object)) { 13 | object = options; 14 | options = {}; 15 | } 16 | 17 | return apiMethod(object, options, req, res).tap(function onSuccess(response) { 18 | return addHeaders(apiMethod, req, res, (response || {})); 19 | }).then(function then(response) { 20 | res.json(response || {}); 21 | }).catch(function onAPIError(error) { 22 | // To be handled by teh API middleware 23 | next(error); 24 | }); 25 | }; 26 | }; 27 | 28 | addHeaders = function addHeaders(apiMethod, req, res, result) { 29 | var cacheInvalidation, 30 | location, 31 | contentDisposition; 32 | 33 | catchInvalidation = cacheInvalidationHeader(req, result); 34 | if(cacheInvalidation) { 35 | res.set({ 36 | 'X-Cache-Invalidate': cacheInvalidation 37 | }); 38 | } 39 | 40 | // 资源创建成功 41 | if(req.method === 'POST') { 42 | // @TODO 对post 资源进行location创建 43 | // location = locationHeader(req, result); 44 | if(location) { 45 | // res.set({Location: location}); 46 | res.status(201); 47 | } 48 | } 49 | return contentDisposition; 50 | }; 51 | 52 | cacheInvalidationHeader = function cacheInvalidationHeader(req, result) { 53 | // 将url 以 / 进行分割 54 | var parsedUrl = req._parsedUrl.pathname.replace(/^\/|\/$/g, '').split('/'), 55 | method = req.method, 56 | endpoint = parsedUrl[0], 57 | cacheInvalidate, 58 | jsonResult = result.toJSON ? result.toJSON() : result, 59 | post, 60 | hasStatusChanged, 61 | wasDeleted; 62 | if (method === 'POST' || method === 'PUT' || method === 'DELETE') { 63 | // 这里设置缓存策略默认禁用缓存 64 | cacheInvalidate = '/*'; 65 | } 66 | 67 | return cacheInvalidate; 68 | }; 69 | 70 | // @TODO 为Location header 添加资源 71 | locationHeader = function locationHeader(req, result) { 72 | var location; 73 | if(req.metod === 'POST') { 74 | // 75 | } 76 | return location; 77 | }; 78 | 79 | module.exports = { 80 | http: http 81 | }; 82 | -------------------------------------------------------------------------------- /core/server/utils/pipeline.js: -------------------------------------------------------------------------------- 1 | /** 2 | * # Pipeline Utility 3 | * 4 | * Based on pipeline.js from when.js: 5 | * https://github.com/cujojs/when/blob/3.7.4/pipeline.js 6 | */ 7 | var Promise = require('bluebird'); 8 | 9 | function pipeline(tasks /* initial arguments */) { 10 | var args = Array.prototype.slice.call(arguments, 1), 11 | 12 | runTask = function (task, args) { 13 | // Self-optimizing function to run first task with multiple 14 | // args using apply, but subsequent tasks via direct invocation 15 | runTask = function (task, arg) { 16 | return task(arg); 17 | }; 18 | 19 | return task.apply(null, args); 20 | }; 21 | 22 | // Resolve any promises for the arguments passed in first 23 | return Promise.all(args).then(function (args) { 24 | // Iterate through the tasks passing args from one into the next 25 | return Promise.reduce(tasks, function (arg, task) { 26 | return runTask(task, arg); 27 | }, args); 28 | }); 29 | } 30 | 31 | module.exports = pipeline; 32 | -------------------------------------------------------------------------------- /localCloudStore/Bucket1/folder/Screen Shot 2016-02-17 at 6.31.26 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket1/folder/Screen Shot 2016-02-17 at 6.31.26 PM.png -------------------------------------------------------------------------------- /localCloudStore/Bucket1/folder/Screen Shot 2016-02-17 at 6.31.28 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket1/folder/Screen Shot 2016-02-17 at 6.31.28 PM.png -------------------------------------------------------------------------------- /localCloudStore/Bucket1/folder/Screen Shot 2016-02-17 at 6.31.38 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket1/folder/Screen Shot 2016-02-17 at 6.31.38 PM.png -------------------------------------------------------------------------------- /localCloudStore/Bucket2/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (1).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (1).ico -------------------------------------------------------------------------------- /localCloudStore/Bucket2/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico -------------------------------------------------------------------------------- /localCloudStore/Bucket2/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (5).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (5).ico -------------------------------------------------------------------------------- /localCloudStore/Bucket2/95f183cf-4fff-475e-9269-62c6677aa0e5 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/95f183cf-4fff-475e-9269-62c6677aa0e5 (1).png -------------------------------------------------------------------------------- /localCloudStore/Bucket2/95f183cf-4fff-475e-9269-62c6677aa0e5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/95f183cf-4fff-475e-9269-62c6677aa0e5.png -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (4).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/TryReact/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (4).ico -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/llljlkjl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/TryReact/llljlkjl -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/TryReact/sdfs/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/sdf/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (3).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/TryReact/sdfs/sdf/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (3).ico -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/sdf/new/sdf/abcb/HelloWorldabcsdf/.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | 3 | # We fork some components by platform. 4 | .*/*.web.js 5 | .*/*.android.js 6 | 7 | # Some modules have their own node_modules with overlap 8 | .*/node_modules/node-haste/.* 9 | 10 | # Ugh 11 | .*/node_modules/babel.* 12 | .*/node_modules/babylon.* 13 | .*/node_modules/invariant.* 14 | 15 | # Ignore react and fbjs where there are overlaps, but don't ignore 16 | # anything that react-native relies on 17 | .*/node_modules/fbjs/lib/Map.js 18 | .*/node_modules/fbjs/lib/Promise.js 19 | .*/node_modules/fbjs/lib/fetch.js 20 | .*/node_modules/fbjs/lib/ExecutionEnvironment.js 21 | .*/node_modules/fbjs/lib/isEmpty.js 22 | .*/node_modules/fbjs/lib/crc32.js 23 | .*/node_modules/fbjs/lib/ErrorUtils.js 24 | 25 | # Flow has a built-in definition for the 'react' module which we prefer to use 26 | # over the currently-untyped source 27 | .*/node_modules/react/react.js 28 | .*/node_modules/react/lib/React.js 29 | .*/node_modules/react/lib/ReactDOM.js 30 | 31 | # Ignore commoner tests 32 | .*/node_modules/commoner/test/.* 33 | 34 | # See https://github.com/facebook/flow/issues/442 35 | .*/react-tools/node_modules/commoner/lib/reader.js 36 | 37 | # Ignore jest 38 | .*/node_modules/jest-cli/.* 39 | 40 | # Ignore Website 41 | .*/website/.* 42 | 43 | [include] 44 | 45 | [libs] 46 | node_modules/react-native/Libraries/react-native/react-native-interface.js 47 | 48 | [options] 49 | module.system=haste 50 | 51 | munge_underscores=true 52 | 53 | module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' 54 | module.name_mapper='^[./a-zA-Z0-9$_-]+\.png$' -> 'RelativeImageStub' 55 | 56 | suppress_type=$FlowIssue 57 | suppress_type=$FlowFixMe 58 | suppress_type=$FixMe 59 | 60 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(2[0-0]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) 61 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(2[0-0]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ 62 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy 63 | 64 | [version] 65 | 0.20.1 66 | -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/sdf/new/sdf/abcb/HelloWorldabcsdf/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # Android/IJ 26 | # 27 | .idea 28 | .gradle 29 | local.properties 30 | 31 | # node.js 32 | # 33 | node_modules/ 34 | npm-debug.log 35 | -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/sdf/new/sdf/abcb/HelloWorldabcsdf/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/sdf/new/sdf/abcb/HelloWorldabcsdf/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.3.1' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | mavenLocal() 18 | jcenter() 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/sdf/new/sdf/abcb/HelloWorldabcsdf/android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | android.useDeprecatedNdk=true 21 | -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/sdf/new/sdf/abcb/HelloWorldabcsdf/android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /localCloudStore/Bucket2/TryReact/sdfs/sdf/new/sdf/abcb/HelloWorldabcsdf/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'HelloWorld' 2 | 3 | include ':app' 4 | -------------------------------------------------------------------------------- /localCloudStore/Bucket2/sdfsdsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket2/sdfsdsf -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (1).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (1).ico -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/214aa4f9-c0d5-4464-82ca-8328a6f92e29 (2).ico -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.3.1' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | mavenLocal() 18 | jcenter() 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld.xcodeproj/project.xcworkspace/xcuserdata/markstock.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld.xcodeproj/project.xcworkspace/xcuserdata/markstock.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 75 | 77 | 83 | 84 | 85 | 86 | 87 | 88 | 94 | 96 | 102 | 103 | 104 | 105 | 107 | 108 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld.xcodeproj/xcuserdata/markstock.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | HelloWorld.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 00E356ED1AD99517003FC87E 16 | 17 | primary 18 | 19 | 20 | 13B07F861A680F5B00A75B9A 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (nonatomic, strong) UIWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld/AppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import "AppDelegate.h" 11 | 12 | #import "RCTRootView.h" 13 | 14 | @implementation AppDelegate 15 | 16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 17 | { 18 | NSURL *jsCodeLocation; 19 | 20 | /** 21 | * Loading JavaScript code - uncomment the one you want. 22 | * 23 | * OPTION 1 24 | * Load from development server. Start the server from the repository root: 25 | * 26 | * $ npm start 27 | * 28 | * To run on device, change `localhost` to the IP address of your computer 29 | * (you can get this by typing `ifconfig` into the terminal and selecting the 30 | * `inet` value under `en0:`) and make sure your computer and iOS device are 31 | * on the same Wi-Fi network. 32 | */ 33 | 34 | jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; 35 | 36 | /** 37 | * OPTION 2 38 | * Load from pre-bundled file on disk. The static bundle is automatically 39 | * generated by "Bundle React Native code and images" build step. 40 | */ 41 | 42 | // jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 43 | 44 | RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation 45 | moduleName:@"HelloWorld" 46 | initialProperties:nil 47 | launchOptions:launchOptions]; 48 | 49 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 50 | UIViewController *rootViewController = [UIViewController new]; 51 | rootViewController.view = rootView; 52 | self.window.rootViewController = rootViewController; 53 | [self.window makeKeyAndVisible]; 54 | return YES; 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UIViewControllerBasedStatusBarAppearance 38 | 39 | NSLocationWhenInUseUsageDescription 40 | 41 | NSAppTransportSecurity 42 | 43 | 44 | NSAllowsArbitraryLoads 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorld/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #import "AppDelegate.h" 13 | 14 | int main(int argc, char * argv[]) { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorldTests/HelloWorldTests.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | #import 12 | 13 | #import "RCTLog.h" 14 | #import "RCTRootView.h" 15 | 16 | #define TIMEOUT_SECONDS 240 17 | #define TEXT_TO_LOOK_FOR @"Welcome to React Native!" 18 | 19 | @interface HelloWorldTests : XCTestCase 20 | 21 | @end 22 | 23 | @implementation HelloWorldTests 24 | 25 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test 26 | { 27 | if (test(view)) { 28 | return YES; 29 | } 30 | for (UIView *subview in [view subviews]) { 31 | if ([self findSubviewInView:subview matching:test]) { 32 | return YES; 33 | } 34 | } 35 | return NO; 36 | } 37 | 38 | - (void)testRendersWelcomeScreen 39 | { 40 | UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; 41 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 42 | BOOL foundElement = NO; 43 | 44 | __block NSString *redboxError = nil; 45 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 46 | if (level >= RCTLogLevelError) { 47 | redboxError = message; 48 | } 49 | }); 50 | 51 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 52 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 53 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 54 | 55 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { 56 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 57 | return YES; 58 | } 59 | return NO; 60 | }]; 61 | } 62 | 63 | RCTSetLogFunction(RCTDefaultLogFunction); 64 | 65 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 66 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 67 | } 68 | 69 | 70 | @end 71 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/HelloWorldTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/Objects-normal/x86_64/RCTActionSheet.LinkFileList: -------------------------------------------------------------------------------- 1 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/Objects-normal/x86_64/RCTActionSheetManager.o 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/Objects-normal/x86_64/RCTActionSheetManager.d: -------------------------------------------------------------------------------- 1 | dependencies: \ 2 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheetManager.m \ 3 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheetManager.h \ 4 | ../../React/Base/RCTBridge.h ../../React/Base/RCTBridgeDelegate.h \ 5 | ../../React/Base/RCTBridgeModule.h ../../React/Base/RCTDefines.h \ 6 | ../../React/Base/RCTFrameUpdate.h ../../React/Base/RCTInvalidating.h \ 7 | ../../React/Base/RCTJavaScriptExecutor.h ../../React/Base/RCTConvert.h \ 8 | ../../React/Layout/Layout.h ../../React/Views/RCTAnimationType.h \ 9 | ../../React/Views/RCTBorderStyle.h \ 10 | ../../React/Views/RCTTextDecorationLineType.h \ 11 | ../../React/Base/RCTLog.h ../../React/Base/RCTAssert.h \ 12 | ../../React/Views/RCTPointerEvents.h ../../React/Base/RCTUtils.h \ 13 | ../../React/Modules/RCTUIManager.h ../../React/Views/RCTViewManager.h \ 14 | ../../React/Views/RCTComponent.h ../../React/Base/RCTEventDispatcher.h 15 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/Objects-normal/x86_64/RCTActionSheetManager.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/Objects-normal/x86_64/RCTActionSheetManager.dia -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-all-non-framework-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-all-non-framework-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-all-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-all-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-generated-files.hmap: -------------------------------------------------------------------------------- 1 | pamhx -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-own-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-own-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-project-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet-project-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/RCTActionSheet.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/dgph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTActionSheet.build/Debug-iphonesimulator/RCTActionSheet.build/dgph -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImage.LinkFileList: -------------------------------------------------------------------------------- 1 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTVirtualImageManager.o 2 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageStoreManager.o 3 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageViewManager.o 4 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTGIFImageDecoder.o 5 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageLoader.o 6 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageEditingManager.o 7 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageView.o 8 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTShadowVirtualImage.o 9 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTXCAssetImageLoader.o 10 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageUtils.o 11 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageStoreManager.d: -------------------------------------------------------------------------------- 1 | dependencies: \ 2 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTImageStoreManager.m \ 3 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTImageStoreManager.h \ 4 | ../../React/Base/RCTBridge.h ../../React/Base/RCTBridgeDelegate.h \ 5 | ../../React/Base/RCTBridgeModule.h ../../React/Base/RCTDefines.h \ 6 | ../../React/Base/RCTFrameUpdate.h ../../React/Base/RCTInvalidating.h \ 7 | ../../React/Base/RCTJavaScriptExecutor.h \ 8 | ../../React/Base/RCTURLRequestHandler.h \ 9 | ../../React/Base/RCTURLRequestDelegate.h ../../React/Base/RCTAssert.h \ 10 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTImageUtils.h \ 11 | ../../React/Base/RCTLog.h ../../React/Base/RCTUtils.h 12 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageStoreManager.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageStoreManager.dia -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageViewManager.d: -------------------------------------------------------------------------------- 1 | dependencies: \ 2 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTImageViewManager.m \ 3 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTImageViewManager.h \ 4 | ../../React/Views/RCTViewManager.h ../../React/Base/RCTBridgeModule.h \ 5 | ../../React/Base/RCTDefines.h ../../React/Base/RCTConvert.h \ 6 | ../../React/Layout/Layout.h ../../React/Views/RCTAnimationType.h \ 7 | ../../React/Views/RCTBorderStyle.h \ 8 | ../../React/Views/RCTTextDecorationLineType.h \ 9 | ../../React/Base/RCTLog.h ../../React/Base/RCTAssert.h \ 10 | ../../React/Views/RCTPointerEvents.h ../../React/Views/RCTComponent.h \ 11 | ../../React/Base/RCTEventDispatcher.h ../../React/Base/RCTBridge.h \ 12 | ../../React/Base/RCTBridgeDelegate.h ../../React/Base/RCTFrameUpdate.h \ 13 | ../../React/Base/RCTInvalidating.h \ 14 | ../../React/Base/RCTJavaScriptExecutor.h \ 15 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTImageLoader.h \ 16 | ../../React/Base/RCTURLRequestHandler.h \ 17 | ../../React/Base/RCTURLRequestDelegate.h \ 18 | ../../React/Base/RCTImageSource.h \ 19 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTImageView.h \ 20 | ../../React/Views/RCTImageComponent.h 21 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageViewManager.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTImageViewManager.dia -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTVirtualImageManager.d: -------------------------------------------------------------------------------- 1 | dependencies: \ 2 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTVirtualImageManager.m \ 3 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTVirtualImageManager.h \ 4 | ../../React/Views/RCTViewManager.h ../../React/Base/RCTBridgeModule.h \ 5 | ../../React/Base/RCTDefines.h ../../React/Base/RCTConvert.h \ 6 | ../../React/Layout/Layout.h ../../React/Views/RCTAnimationType.h \ 7 | ../../React/Views/RCTBorderStyle.h \ 8 | ../../React/Views/RCTTextDecorationLineType.h \ 9 | ../../React/Base/RCTLog.h ../../React/Base/RCTAssert.h \ 10 | ../../React/Views/RCTPointerEvents.h ../../React/Views/RCTComponent.h \ 11 | ../../React/Base/RCTEventDispatcher.h ../../React/Base/RCTBridge.h \ 12 | ../../React/Base/RCTBridgeDelegate.h ../../React/Base/RCTFrameUpdate.h \ 13 | ../../React/Base/RCTInvalidating.h \ 14 | ../../React/Base/RCTJavaScriptExecutor.h \ 15 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/Image/RCTShadowVirtualImage.h \ 16 | ../../React/Views/RCTShadowView.h ../../React/Base/RCTRootView.h \ 17 | ../../React/Views/RCTImageComponent.h \ 18 | ../../React/Base/RCTImageSource.h 19 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTVirtualImageManager.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/Objects-normal/x86_64/RCTVirtualImageManager.dia -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-all-non-framework-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-all-non-framework-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-all-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-all-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-generated-files.hmap: -------------------------------------------------------------------------------- 1 | pamhx -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-own-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-own-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-project-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage-project-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/RCTImage.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/dgph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTImage.build/Debug-iphonesimulator/RCTImage.build/dgph -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/Objects-normal/x86_64/RCTLinking.LinkFileList: -------------------------------------------------------------------------------- 1 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/Objects-normal/x86_64/RCTLinkingManager.o 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/Objects-normal/x86_64/RCTLinkingManager.d: -------------------------------------------------------------------------------- 1 | dependencies: \ 2 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/LinkingIOS/RCTLinkingManager.m \ 3 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/node_modules/react-native/Libraries/LinkingIOS/RCTLinkingManager.h \ 4 | ../../React/Base/RCTBridgeModule.h ../../React/Base/RCTDefines.h \ 5 | ../../React/Base/RCTBridge.h ../../React/Base/RCTBridgeDelegate.h \ 6 | ../../React/Base/RCTFrameUpdate.h ../../React/Base/RCTInvalidating.h \ 7 | ../../React/Base/RCTJavaScriptExecutor.h \ 8 | ../../React/Base/RCTEventDispatcher.h ../../React/Base/RCTUtils.h \ 9 | ../../React/Base/RCTAssert.h 10 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/Objects-normal/x86_64/RCTLinkingManager.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/Objects-normal/x86_64/RCTLinkingManager.dia -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-all-non-framework-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-all-non-framework-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-all-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-all-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-generated-files.hmap: -------------------------------------------------------------------------------- 1 | pamhx -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-own-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-own-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-project-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking-project-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/RCTLinking.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/dgph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTLinking.build/Debug-iphonesimulator/RCTLinking.build/dgph -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/Objects-normal/x86_64/RCTNetwork.LinkFileList: -------------------------------------------------------------------------------- 1 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/Objects-normal/x86_64/RCTNetworkTask.o 2 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/Objects-normal/x86_64/RCTFileRequestHandler.o 3 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/Objects-normal/x86_64/RCTDataRequestHandler.o 4 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/Objects-normal/x86_64/RCTNetInfo.o 5 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/Objects-normal/x86_64/RCTNetworking.o 6 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/Objects-normal/x86_64/RCTHTTPRequestHandler.o 7 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-all-non-framework-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-all-non-framework-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-all-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-all-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-generated-files.hmap: -------------------------------------------------------------------------------- 1 | pamhx -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-own-target-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-own-target-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-project-headers.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork-project-headers.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork.hmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/RCTNetwork.hmap -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/Build/Intermediates/RCTNetwork.build/Debug-iphonesimulator/RCTNetwork.build/dgph: -------------------------------------------------------------------------------- 1 | DGPH1.00 Apr 14 201516:50:56Q/Users markstockpublic ProjectRepoTryReact 2 | HelloWorld node_modules react-native Libraries 3 | Networkios build BuildProducts IntermediatestmpRCTNetwork.dstvarfoldersskv9n32qn14pq481lw3by00rg40000gnCcom.apple.DeveloperTools 6.3.1-6D1002XcodeDebug-iphonesimulatorRCTNetwork.buildDebug-iphonesimulatorPrecompiledHeaders Applications Xcode.app Contents! Developer" Platforms#iPhoneSimulator.platform$ Developer%SDKs&iPhoneSimulator8.3.sdkRCTNetwork.build(DerivedSourceslibRCTNetwork.a RCTNetworkTask.m(Objects-normal,x86_64-RCTNetworkTask.o'SDKSettings.plist'System0Library1 CoreServices2SystemVersion.plist" 4 | Toolchains4XcodeDefault.xctoolchain5usr6lib7clang86.1.09include: 5 | module.map(StaticAnalyzer< 6 | RCTNetwork= 7 | RCTNetwork>normal?x86_64@RCTNetworkTask.plist RCTFileRequestHandler.m-RCTFileRequestHandler.o@RCTFileRequestHandler.plist RCTDataRequestHandler.m-RCTDataRequestHandler.o@RCTDataRequestHandler.plist RCTNetInfo.m- RCTNetInfo.o@RCTNetInfo.plist RCTNetworking.m-RCTNetworking.o@RCTNetworking.plist RCTHTTPRequestHandler.m-RCTHTTPRequestHandler.o@RCTHTTPRequestHandler.plist-RCTNetwork.LinkFileList -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/Session.modulevalidation: -------------------------------------------------------------------------------- 1 | Module build session file for module cache at /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/build/ModuleCache 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CFNetwork-N94D31PLFESQ.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CFNetwork-N94D31PLFESQ.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CFNetwork-N94D31PLFESQ.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreFoundation-3MOS9MZDR6J1P.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreFoundation-3MOS9MZDR6J1P.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreFoundation-3MOS9MZDR6J1P.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreGraphics-N94D31PLFESQ.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreGraphics-N94D31PLFESQ.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreGraphics-N94D31PLFESQ.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreImage-N94D31PLFESQ.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreImage-N94D31PLFESQ.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreImage-N94D31PLFESQ.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreText-N94D31PLFESQ.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreText-N94D31PLFESQ.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreText-N94D31PLFESQ.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreVideo-2LUXD6OZSQPF.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreVideo-2LUXD6OZSQPF.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/CoreVideo-2LUXD6OZSQPF.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Darwin-N0EKDJGHFAYB.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Darwin-N0EKDJGHFAYB.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Darwin-N0EKDJGHFAYB.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Dispatch-2ZKKDUJ5RGF0S.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Dispatch-2ZKKDUJ5RGF0S.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Dispatch-2ZKKDUJ5RGF0S.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Foundation-2NNP27CGK7J4W.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Foundation-2NNP27CGK7J4W.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Foundation-2NNP27CGK7J4W.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/ImageIO-N94D31PLFESQ.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/ImageIO-N94D31PLFESQ.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/ImageIO-N94D31PLFESQ.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/JavaScriptCore-N94D31PLFESQ.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/JavaScriptCore-N94D31PLFESQ.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/JavaScriptCore-N94D31PLFESQ.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/MachO-1BMJAO5Q3NM3O.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/MachO-1BMJAO5Q3NM3O.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/MachO-1BMJAO5Q3NM3O.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/MobileCoreServices-N94D31PLFESQ.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/MobileCoreServices-N94D31PLFESQ.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/MobileCoreServices-N94D31PLFESQ.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/ObjectiveC-1RQA2RIXJIE19.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/ObjectiveC-1RQA2RIXJIE19.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/ObjectiveC-1RQA2RIXJIE19.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/OpenGLES-JLMMBGEUW8IK.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/OpenGLES-JLMMBGEUW8IK.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/OpenGLES-JLMMBGEUW8IK.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/QuartzCore-243GPM1WM5PQT.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/QuartzCore-243GPM1WM5PQT.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/QuartzCore-243GPM1WM5PQT.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Security-T0W5HZGV3ZZ1.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Security-T0W5HZGV3ZZ1.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/Security-T0W5HZGV3ZZ1.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/UIKit-27PL4RA7HR3WK.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/UIKit-27PL4RA7HR3WK.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/UIKit-27PL4RA7HR3WK.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/modules.idx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/modules.idx -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/os-N0EKDJGHFAYB.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/os-N0EKDJGHFAYB.pcm -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/X4M7VRHEEETK/os-N0EKDJGHFAYB.pcm.timestamp: -------------------------------------------------------------------------------- 1 | Timestamp file 2 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/modules.timestamp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/build/ModuleCache/modules.timestamp -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/build/info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WorkspacePath 6 | /Users/markstock/public/ProjectRepo/TryReact/HelloWorld/ios/HelloWorld.xcodeproj 7 | 8 | 9 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/java/com/helloworld/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.helloworld; 2 | 3 | import com.facebook.react.ReactActivity; 4 | import com.facebook.react.ReactPackage; 5 | import com.facebook.react.shell.MainReactPackage; 6 | 7 | import java.util.Arrays; 8 | import java.util.List; 9 | 10 | public class MainActivity extends ReactActivity { 11 | 12 | /** 13 | * Returns the name of the main component registered from JavaScript. 14 | * This is used to schedule rendering of the component. 15 | */ 16 | @Override 17 | protected String getMainComponentName() { 18 | return "HelloWorld"; 19 | } 20 | 21 | /** 22 | * Returns whether dev mode should be enabled. 23 | * This enables e.g. the dev menu. 24 | */ 25 | @Override 26 | protected boolean getUseDeveloperSupport() { 27 | return BuildConfig.DEBUG; 28 | } 29 | 30 | /** 31 | * A list of packages used by the app. If the app uses additional views 32 | * or modules besides the default ones, add more packages here. 33 | */ 34 | @Override 35 | protected List getPackages() { 36 | return Arrays.asList( 37 | new MainReactPackage() 38 | ); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | HelloWorld 3 | 4 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/ios/src-bac/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/localCloudStore/Bucket3/android/app/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip 6 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Disabling obfuscation is useful if you collect stack traces from production crashes 20 | # (unless you are using a system that supports de-obfuscate the stack traces). 21 | -dontobfuscate 22 | 23 | # React Native 24 | 25 | # Keep our interfaces so they can be used by other ProGuard rules. 26 | # See http://sourceforge.net/p/proguard/bugs/466/ 27 | -keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip 28 | -keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters 29 | 30 | # Do not strip any method/class that is annotated with @DoNotStrip 31 | -keep @com.facebook.proguard.annotations.DoNotStrip class * 32 | -keepclassmembers class * { 33 | @com.facebook.proguard.annotations.DoNotStrip *; 34 | } 35 | 36 | -keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { 37 | void set*(***); 38 | *** get*(); 39 | } 40 | 41 | -keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } 42 | -keep class * extends com.facebook.react.bridge.NativeModule { *; } 43 | -keepclassmembers,includedescriptorclasses class * { native ; } 44 | -keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } 45 | -keepclassmembers class * { @com.facebook.react.uimanager.ReactProp ; } 46 | -keepclassmembers class * { @com.facebook.react.uimanager.ReactPropGroup ; } 47 | 48 | -dontwarn com.facebook.react.** 49 | 50 | # okhttp 51 | 52 | -keepattributes Signature 53 | -keepattributes *Annotation* 54 | -keep class com.squareup.okhttp.** { *; } 55 | -keep interface com.squareup.okhttp.** { *; } 56 | -dontwarn com.squareup.okhttp.** 57 | 58 | # okio 59 | 60 | -keep class sun.misc.Unsafe { *; } 61 | -dontwarn java.nio.file.* 62 | -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 63 | -dontwarn okio.** 64 | 65 | # stetho 66 | 67 | -dontwarn com.facebook.stetho.** 68 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/android/app/react.gradle: -------------------------------------------------------------------------------- 1 | import org.apache.tools.ant.taskdefs.condition.Os 2 | 3 | def config = project.hasProperty("react") ? project.react : []; 4 | 5 | def bundleAssetName = config.bundleAssetName ?: "index.android.bundle" 6 | def entryFile = config.entryFile ?: "index.android.js" 7 | 8 | // because elvis operator 9 | def elvisFile(thing) { 10 | return thing ? file(thing) : null; 11 | } 12 | 13 | def reactRoot = elvisFile(config.root) ?: file("../../") 14 | def inputExcludes = config.inputExcludes ?: ["android/**", "ios/**"] 15 | 16 | void runBefore(String dependentTaskName, Task task) { 17 | Task dependentTask = tasks.findByPath(dependentTaskName); 18 | if (dependentTask != null) { 19 | dependentTask.dependsOn task 20 | } 21 | } 22 | 23 | gradle.projectsEvaluated { 24 | // Grab all build types and product flavors 25 | def buildTypes = android.buildTypes.collect { type -> type.name } 26 | def productFlavors = android.productFlavors.collect { flavor -> flavor.name } 27 | 28 | // When no product flavors defined, use empty 29 | if (!productFlavors) productFlavors.add('') 30 | 31 | productFlavors.each { productFlavorName -> 32 | buildTypes.each { buildTypeName -> 33 | // Create variant and source names 34 | def sourceName = "${buildTypeName}" 35 | def targetName = "${sourceName.capitalize()}" 36 | if (productFlavorName) { 37 | sourceName = "${productFlavorName}${targetName}" 38 | } 39 | 40 | // React js bundle directories 41 | def jsBundleDirConfigName = "jsBundleDir${targetName}" 42 | def jsBundleDir = elvisFile(config."$jsBundleDirConfigName") ?: 43 | file("$buildDir/intermediates/assets/${sourceName}") 44 | 45 | def resourcesDirConfigName = "jsBundleDir${targetName}" 46 | def resourcesDir = elvisFile(config."${resourcesDirConfigName}") ?: 47 | file("$buildDir/intermediates/res/merged/${sourceName}") 48 | def jsBundleFile = file("$jsBundleDir/$bundleAssetName") 49 | 50 | // Bundle task name for variant 51 | def bundleJsAndAssetsTaskName = "bundle${targetName}JsAndAssets" 52 | 53 | def currentBundleTask = tasks.create( 54 | name: bundleJsAndAssetsTaskName, 55 | type: Exec) { 56 | group = "react" 57 | description = "bundle JS and assets for ${targetName}." 58 | 59 | // Create dirs if they are not there (e.g. the "clean" task just ran) 60 | doFirst { 61 | jsBundleDir.mkdirs() 62 | resourcesDir.mkdirs() 63 | } 64 | 65 | // Set up inputs and outputs so gradle can cache the result 66 | inputs.files fileTree(dir: reactRoot, excludes: inputExcludes) 67 | outputs.dir jsBundleDir 68 | outputs.dir resourcesDir 69 | 70 | // Set up the call to the react-native cli 71 | workingDir reactRoot 72 | 73 | // Set up dev mode 74 | def devEnabled = !targetName.toLowerCase().contains("release") 75 | if (Os.isFamily(Os.FAMILY_WINDOWS)) { 76 | commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}", 77 | "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir 78 | } else { 79 | commandLine "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}", 80 | "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir 81 | } 82 | 83 | enabled config."bundleIn${targetName}" ?: targetName.toLowerCase().contains("release") 84 | } 85 | 86 | // Hook bundle${productFlavor}${buildType}JsAndAssets into the android build process 87 | currentBundleTask.dependsOn("merge${targetName}Resources") 88 | currentBundleTask.dependsOn("merge${targetName}Assets") 89 | 90 | runBefore("processArmeabi-v7a${targetName}Resources", currentBundleTask) 91 | runBefore("processX86${targetName}Resources", currentBundleTask) 92 | runBefore("processUniversal${targetName}Resources", currentBundleTask) 93 | runBefore("process${targetName}Resources", currentBundleTask) 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/index.android.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sample React Native App 3 | * https://github.com/facebook/react-native 4 | */ 5 | 'use strict'; 6 | import React, { 7 | AppRegistry, 8 | Component, 9 | StyleSheet, 10 | Text, 11 | View 12 | } from 'react-native'; 13 | 14 | class HelloWorld extends Component { 15 | render() { 16 | return ( 17 | 18 | 19 | Welcome to React Native! 20 | 21 | 22 | To get started, edit index.android.js 23 | 24 | 25 | Shake or press menu button for dev menu 26 | 27 | 28 | ); 29 | } 30 | } 31 | 32 | const styles = StyleSheet.create({ 33 | container: { 34 | flex: 1, 35 | justifyContent: 'center', 36 | alignItems: 'center', 37 | backgroundColor: '#F5FCFF', 38 | }, 39 | welcome: { 40 | fontSize: 20, 41 | textAlign: 'center', 42 | margin: 10, 43 | }, 44 | instructions: { 45 | textAlign: 'center', 46 | color: '#333333', 47 | marginBottom: 5, 48 | }, 49 | }); 50 | 51 | AppRegistry.registerComponent('HelloWorld', () => HelloWorld); 52 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/index.ios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sample React Native App 3 | * https://github.com/facebook/react-native 4 | */ 5 | 'use strict'; 6 | import React, { 7 | AppRegistry, 8 | Component, 9 | StyleSheet, 10 | Text, 11 | View 12 | } from 'react-native'; 13 | 14 | class HelloWorld extends Component { 15 | render() { 16 | return ( 17 | 18 | 19 | Welcome to React Native! 20 | 21 | 22 | To get started, edit index.ios.js 23 | 24 | 25 | Press Cmd+R to reload,{'\n'} 26 | Cmd+D or shake for dev menu 27 | 28 | 29 | ); 30 | } 31 | } 32 | 33 | const styles = StyleSheet.create({ 34 | container: { 35 | flex: 1, 36 | justifyContent: 'center', 37 | alignItems: 'center', 38 | backgroundColor: '#F5FCFF', 39 | }, 40 | welcome: { 41 | fontSize: 20, 42 | textAlign: 'center', 43 | margin: 10, 44 | }, 45 | instructions: { 46 | textAlign: 'center', 47 | color: '#333333', 48 | marginBottom: 5, 49 | }, 50 | }); 51 | 52 | AppRegistry.registerComponent('HelloWorld', () => HelloWorld); 53 | -------------------------------------------------------------------------------- /localCloudStore/Bucket3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HelloWorld", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node node_modules/react-native/local-cli/cli.js start" 7 | }, 8 | "dependencies": { 9 | "react-native": "^0.19.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "myapp", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "node ./bin/www" 7 | }, 8 | "dependencies": { 9 | "aliyun-sdk": "^1.9.1", 10 | "async": "^2.0.0-rc.5", 11 | "bluebird": "^3.3.1", 12 | "body-parser": "~1.13.2", 13 | "cookie-parser": "~1.3.5", 14 | "debug": "~2.2.0", 15 | "express": "~4.13.1", 16 | "jade": "~1.11.0", 17 | "lodash": "^4.3.0", 18 | "morgan": "~1.6.1", 19 | "multer": "^1.1.0", 20 | "rimraf": "^2.5.2", 21 | "rimraf-promise": "^2.0.0", 22 | "serve-favicon": "~2.3.0", 23 | "swig": "^1.4.2", 24 | "underscore": "^1.8.3" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /public/assets/fileManager/cloudpanel.css: -------------------------------------------------------------------------------- 1 | *{ 2 | font: 12px/1.5 tahoma,arial,"宋体"; 3 | } 4 | a{ 5 | color: #06c; 6 | text-decoration: none; 7 | } 8 | 9 | .oss-icon-small{ 10 | background: url(./icon/icons.gif) 9999px 9999px no-repeat; 11 | width:20px; 12 | } 13 | .oss-icon-small.icon_mp3{ 14 | background-position: -193px -80px; 15 | } 16 | .oss-icon-small.icon_dir{ 17 | background-position: -2px 0px; 18 | } 19 | .oss-icon-small.icon-zip{ 20 | background-position: -349px 81px; 21 | } 22 | .oss-icon-small.icon_image{ 23 | background-position: -2px -80px; 24 | } 25 | .oss-icon-small.icon_txt { 26 | background-position: -162px -80px; 27 | } 28 | 29 | 30 | 31 | /** General icon */ 32 | .oss-icon { 33 | display: inline-block; 34 | min-width: 20px; 35 | min-height: 20px; 36 | background: url(./image/btn_icon.gif) no-repeat; 37 | } 38 | .oss-icon-s{ 39 | display: inline-block; 40 | min-width: 10px; 41 | min-height: 10px; 42 | background: url(./image/btn_icon.gif) no-repeat; 43 | } 44 | .oss-icon.share:hover{ 45 | background-position: -182px -59px; /** x + 31 */ 46 | } 47 | .oss-icon.share{ 48 | background-position: -208px -230px; 49 | } 50 | .oss-icon.blank{ 51 | background-position: -111px 3px; 52 | } 53 | .oss-icon.check{ 54 | background-position: -111px -16px; 55 | } 56 | .oss-icon.download{ 57 | background-position: -207px -210px; 58 | } 59 | .oss-icon.download:hover{ 60 | background-position: -181px -39px; /** x + 31 */ 61 | } 62 | .oss-icon.download-light{ 63 | background-position: -207px -485px; 64 | } 65 | .oss-icon.download-light:hover{ 66 | background-position: -182px -37px; /** x + 31 */ 67 | } 68 | .oss-icon.more{ 69 | background-position: -208px -351px; 70 | } 71 | .oss-icon.more:hover{ 72 | background-position: -182px -308px; 73 | } 74 | .oss-icon.createfile{ 75 | background-position: 0 -416px; 76 | } 77 | .oss-icon.createfile:hover{ 78 | background-position: 0 -448px; 79 | } 80 | .oss-icon.bucket{ 81 | background-position: -0px -59px; 82 | width: 24px 83 | } 84 | .oss-icon.folder{ 85 | background-position: -0px -224px; 86 | width: 24px; 87 | } 88 | .oss-icon.upload{ 89 | background-position: -180px -280px; 90 | width: 24px; 91 | } 92 | .oss-icon.delete{ 93 | background-position: -156px -128px; 94 | } 95 | .oss-icon.delete:hover{ 96 | background-position: -230px -150px; 97 | } 98 | .oss-icon.list{ 99 | background-position: -65px -237px; 100 | width: 33px; 101 | height: 29px; 102 | } 103 | .oss-icon.list-selected{ 104 | background-position: -65px -268px; 105 | width: 33px; 106 | height: 29px; 107 | } 108 | .oss-icon.grid{ 109 | background-position: -98px -268px; 110 | width: 33px; 111 | height: 29px; 112 | } 113 | .oss-icon.grid-selected{ 114 | background-position: -98px -237px; 115 | width: 33px; 116 | height: 29px; 117 | } 118 | .oss-icon.grid:hover{ 119 | background-position: -121px -141px; 120 | width: 33px; 121 | height: 29px; 122 | } 123 | .oss-icon.list:hover{ 124 | background-position: -88px -140px; 125 | width: 33px; 126 | height: 29px; 127 | } 128 | .oss-icon.drapout{ 129 | background-position: -207px -417px; 130 | } 131 | .oss-icon.drapout:hover{ 132 | background-position: -227px -417px; 133 | } 134 | .oss-icon-s.plus{ 135 | background-position: -237px -265px; 136 | height: 11px; 137 | width: 11px; 138 | } 139 | .oss-icon-s.minus{ 140 | background-position: -237px -247px; 141 | height: 11px; 142 | width: 11px; 143 | } 144 | .oss-icon-s.smile{ 145 | background-position: -237px -265px; 146 | height: 11px; 147 | width: 11px; 148 | } 149 | .oss-icon-s.close{ 150 | background-position: -276px -42px; 151 | width: 25px; 152 | height: 25px; 153 | } 154 | .oss-icon-s.close:hover{ 155 | background-position: -251px -42px; 156 | width: 25px; 157 | height: 25px; 158 | } 159 | 160 | 161 | 162 | 163 | 164 | .clearfix{ 165 | 166 | } 167 | .clearfix:before{ 168 | content:''; 169 | display:table; 170 | } 171 | .clearfix:after{ 172 | clear:both; 173 | content: " "; 174 | display: table; 175 | } 176 | 177 | .ossUploadWrapper{ 178 | position: fixed; 179 | top: 0; 180 | right: 0; 181 | bottom: 0; 182 | left: 0; 183 | z-index: 1050; 184 | overflow: hidden; 185 | -webkit-overflow-scrolling: touch; 186 | outline: 0; 187 | background: rgba(0,0,0,0.3); 188 | 189 | } 190 | .ossUpload{ 191 | position: relative; 192 | margin: 30 auto; 193 | width:1400px; 194 | -webkit-box-shadow: 0 2px 3px rgba(0,0,0,0.125); 195 | box-shadow: 0 2px 3px rgba(0,0,0,0.125); 196 | background-color: #fff; 197 | -webkit-background-clip: padding-box; 198 | background-clip: padding-box; outline: 0; 199 | -webkit-box-shadow: 0 3px 9px rgba(0,0,0,.5); 200 | box-shadow: 0 3px 9px rgba(0,0,0,.5); 201 | } 202 | 203 | .ossUploadSide{ 204 | float: left; 205 | width: 220px; 206 | height: 600px; 207 | background: #F0F0F0; 208 | border-right-width: 1px; 209 | border-right-style: solid; 210 | border-right-color: #ccc; 211 | -webkit-user-select: none; 212 | -moz-user-select: none; 213 | -ms-user-select: none; 214 | user-select: none; 215 | padding: 10px 5px 10px 8px; 216 | box-sizing: border-box; 217 | overflow: auto; 218 | } 219 | .ossUploadBody{ 220 | position:relative; 221 | width:auto; 222 | margin-left:220px; 223 | height:600px; 224 | background-color: #fff; 225 | z-index: 200; 226 | } 227 | .ossUploadBody-head{ 228 | min-height: 16.43px; 229 | padding: 15px; 230 | border-bottom: 2px solid #e5e5e5; 231 | } 232 | .oss-titile{ 233 | margin:0px; 234 | font-weight: bolder; 235 | font-size: 18px; 236 | color: #666; 237 | 238 | } 239 | .ossUploadClose{ 240 | float: right; 241 | font-size: 17px; 242 | font-weight: 700; 243 | line-height: 1; 244 | color: #000; 245 | text-shadow: 0 1px 0 #fff; 246 | cursor:pointer; 247 | } 248 | .ossUploadBody-content{ 249 | box-sizing: border-box; 250 | -moz-box-sizing: border-box; 251 | -webkit-box-sizing: border-box; 252 | height: 100%; 253 | padding-bottom: 50px; 254 | } 255 | 256 | 257 | 258 | .ossUploadBody-foot{ 259 | position: absolute; 260 | left: 0px; 261 | bottom: 0px; 262 | height: 50px; 263 | border-top: 1px solid #BFC7B7; 264 | width: 100%; 265 | background-color: #fff; 266 | 267 | } 268 | .ossUploadBody-foot .ossReportBox { 269 | font-size: 16px; 270 | margin: 13px 0; 271 | padding-left:10px; 272 | display: none; 273 | } 274 | .ossUploadBody-foot .ossReportBox .ossReport-name { 275 | font-weight: bolder; 276 | color: #0066CC; 277 | margin-right: 10px; 278 | font-size: 14px; 279 | } 280 | .ossUploadBody-foot .ossReportBox .ossReport-value { 281 | color:#333; 282 | } 283 | 284 | 285 | 286 | 287 | .ossFolder-list { 288 | list-style: none; 289 | margin: 0px; 290 | padding: 0px; 291 | } 292 | .ossFolder{ 293 | font-size: 13px; 294 | color: #333; 295 | cursor: pointer; 296 | position: relative; 297 | } 298 | .activeFolder.select-placeholder{ 299 | display: block; 300 | } 301 | .currentFolder.select-placeholder{ 302 | display: block; 303 | } 304 | .select-placeholder { 305 | height: 23px; 306 | position: absolute; 307 | display: none; 308 | /* top: 0px; */ 309 | margin-top: 3px; 310 | width: 200px; 311 | background: #217ADC; 312 | filter: alpha(opacity=20); 313 | opacity: 0.3; 314 | padding: 0 5px; 315 | } 316 | 317 | .select-placeholder.active{ 318 | display:block; 319 | } 320 | 321 | .folder-icon{ 322 | margin-right: 3px; 323 | position: relative; 324 | top: 4px; 325 | } 326 | .ossFolder .ossFolder{ 327 | padding-left: 13px; 328 | } 329 | .ossFolderCreate { 330 | font-size: 13px; 331 | color: #333; 332 | cursor: pointer; 333 | position: relative; 334 | padding-left: 26px; 335 | top:2px; 336 | display:none; 337 | min-width: 180px; 338 | } 339 | 340 | 341 | .folder-collapse { 342 | color: #999; 343 | position: relative; 344 | } 345 | .folder-name { 346 | position:relative; 347 | } 348 | .folder-name .edit-name{ 349 | height: 23px; 350 | position: absolute; 351 | margin: 0px; 352 | top: -6px; 353 | left: 0px; 354 | display:none; 355 | } 356 | .folder-name .edit-name .edit-name-box{ 357 | width: 130px; 358 | } 359 | 360 | 361 | 362 | /** crumb **/ 363 | .oss-module-crumbs { 364 | padding: 5px 0; 365 | position: relative; 366 | z-index: 95; 367 | } 368 | .oss-module-crumbs .ossCrumbs{ 369 | display:none; 370 | padding: 0 0 0 25px; 371 | color: rgb(0, 102, 204); 372 | } 373 | .oss-module-crumbs .ossCrumbs .crumb-item{ 374 | display: inline-block; 375 | max-width: 120px; 376 | white-space: nowrap; 377 | text-overflow: ellipsis; 378 | overflow: hidden; 379 | vertical-align: top; 380 | 381 | } 382 | .oss-module-crumbs .ossCrumbs .crumb-item-span{ 383 | color:#333; 384 | } 385 | .oss-module-crumbs .ossCrumbs .crumb-item.current{ 386 | color:#333; 387 | } 388 | .oss-module-crumbs .ossCrumbs-status{ 389 | float:right; 390 | margin-right:20px; 391 | } 392 | 393 | 394 | .oss-module-toolbar{ 395 | position: relative; 396 | z-index: 99; 397 | } 398 | .oss-module-toolbar .oss-bar{ 399 | border-bottom: 1px solid #d2d2d2; 400 | background: #F7F7F7 left -53px repeat-x; 401 | padding: 10px 0px; 402 | } 403 | .oss-module-toolbar .oss-bar .toolbar-grid-view{ 404 | float:right; 405 | margin-right: 20px; 406 | } 407 | .oss-module-toolbar .oss-bar .toolbar-list-view{ 408 | float:right; 409 | 410 | } 411 | .oss-module-toolbar .tool:hover{ 412 | color:red; 413 | } 414 | /** 上传按钮 */ 415 | .oss-module-toolbar .oss-bar .toolbar-upload{ 416 | position:relative; 417 | display: inline-block; 418 | height: 28px; 419 | line-height: 26px; 420 | line-height: 29px\9; 421 | color: #666; 422 | vertical-align: middle; 423 | margin: 0 0 0 5px; 424 | _position: relative; 425 | _top: 12px; 426 | padding: 0 10px; 427 | color: #fff; 428 | border-radius: 2px; 429 | background-color: #1A71D3; 430 | margin-left: 15px; 431 | background: -webkit-linear-gradient(top,#1778E6,#5399E8); 432 | background: -moz-linear-gradien(top,#1778E6,#5399E8); 433 | background: linear-gradient(top,#1778E6,#5399E8); 434 | } 435 | .oss-module-toolbar .oss-bar .toolbar-upload input{ 436 | position: absolute; 437 | width: 95px; 438 | height: 28px; 439 | left: 0px; 440 | filter: alpha(opacity=00); 441 | opacity: 0; 442 | } 443 | .oss-module-toolbar .oss-bar .toolbar-upload .oss-icon{ 444 | position:relative; 445 | top:3px; 446 | } 447 | 448 | .oss-module-toolbar .oss-bar .toolbar-new-dir{ 449 | display: inline-block; 450 | } 451 | .oss-module-toolbar .oss-bar .toolbar-new-dir .oss-icon{ 452 | width: 65px; 453 | height: 28px; 454 | line-height: 26px; 455 | line-height: 29px\9; 456 | padding-left: 31px; 457 | color: #666; 458 | vertical-align: middle; 459 | margin: 0 0 0 5px; 460 | 461 | } 462 | 463 | 464 | /** Module List View **/ 465 | .oss-module-list-view { 466 | display:none; 467 | position: relative; 468 | width: 100%; 469 | padding-left: 20px; 470 | -webkit-box-sizing: border-box; 471 | -moz-box-sizing: border-box; 472 | box-sizing: border-box; 473 | height: 100%; 474 | padding-bottom: 77px; 475 | 476 | } 477 | .list-view-home { 478 | width: 100%; 479 | text-align: left; 480 | border-collapse: collapse; 481 | display: block; 482 | overflow: auto; 483 | height: 100%; 484 | box-sizing: border-box; 485 | -moz-box-sizing: border-box; 486 | -webkit-box-sizing: border-box; 487 | } 488 | .list-view-title{ 489 | display: block; 490 | } 491 | .list-view-home .list-view-title tr { 492 | height: 40px; 493 | line-height: 41px; 494 | border-bottom: 1px solid #D2D2D2; 495 | border-top: 1px solid #D2D2D2; 496 | border-left: 1px solid #d2d2d2; 497 | background: #F7F7F7; 498 | cursor: pointer; 499 | width:100%; 500 | left: -1px; 501 | } 502 | .list-view-home tr th { 503 | padding-left:10px; 504 | } 505 | .view-list-content { 506 | display: block; 507 | overflow: auto; 508 | height: 100%; 509 | box-sizing: border-box; 510 | -moz-box-sizing: border-box; 511 | -webkit-box-sizing: border-box; 512 | height: inherit; 513 | width:100%; 514 | } 515 | .oss-module-list-view .list { 516 | position: relative; 517 | border-bottom: 1px solid #D2D2D2; 518 | display: block; 519 | cursor: pointer; 520 | width: 100%; 521 | height: 40px; 522 | 523 | } 524 | .view-list-content .list.item_active { 525 | background-color:rgb(242, 247, 255); 526 | } 527 | .view-list-content .list.item_check { 528 | background-color:rgb(242, 247, 255); 529 | } 530 | .oss-module-list-view .oss-list-check { 531 | display: inline-block; 532 | position: relative; 533 | top: 5px; 534 | } 535 | .view-list-content .list.item_active .oss-list-action{ 536 | display:block !important; 537 | cursor:pointer; 538 | } 539 | .oss-module-list-view .list th{ 540 | position:relative; 541 | display: block; 542 | height:40px; 543 | } 544 | .oss-module-list-view .list .col1 { 545 | width: 60%; 546 | float:left; 547 | padding: 5px 0 11px 4; 548 | box-sizing: border-box; 549 | 550 | } 551 | .oss-module-list-view .list .col2{ 552 | width: 20%; 553 | box-sizing: border-box; 554 | float: left; 555 | padding: 9px 0; 556 | } 557 | .oss-module-list-view .list .col3{ 558 | box-sizing: border-box; 559 | float: left; 560 | padding: 9px 0; 561 | } 562 | .view-list-content .list .col1 .oss-list-action{ 563 | position: absolute; 564 | display:none ; 565 | top: 0px; 566 | right: 15px; 567 | height: 38px; 568 | background-color: #f0f8fd; 569 | } 570 | .view-list-content .list .col1 .oss-list-action .action{ 571 | display: inline-block; 572 | height: 20px; 573 | width: 20px; 574 | margin: 10px 0 0 5px; 575 | } 576 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper{ 577 | position:relative; 578 | } 579 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper .more-list{ 580 | top: auto; 581 | bottom: 25px; 582 | } 583 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper .more-list-up{ 584 | position: absolute; 585 | top: 19px; 586 | left: -37px; 587 | width: 100px; 588 | text-align: center; 589 | background: none repeat scroll 0 0 #FFF; 590 | border: 1px solid #CFCFCF; 591 | box-shadow: 0 2px 3px #CFCFCF; 592 | border-radius: 3px; 593 | text-indent: 0; 594 | display: none; 595 | z-index: 9999; 596 | height: 112px; 597 | 598 | } 599 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper .more-list-up .more-item{ 600 | display: block; 601 | color: #666; 602 | display: block; 603 | border-bottom: 1px solid #E7E7E7; 604 | line-height: 27px; 605 | background:inherit; 606 | 607 | } 608 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper .more-list-up .more-item:hover{ 609 | background-color: #f0f8fd 610 | } 611 | .view-list-content .oss-list-filename { 612 | margin-left: 5px; 613 | } 614 | .view-list-content .oss-list-icon{ 615 | position: relative; 616 | display:inline-block; 617 | top: 4px; 618 | padding: 0 3px; 619 | height:20px; 620 | } 621 | 622 | 623 | 624 | 625 | 626 | 627 | .oss-module-context-menu ul{ 628 | list-style: none; 629 | padding: 5px 5px; 630 | padding: 4px 0; 631 | width: 100px; 632 | position: fixed; 633 | background: #fefefe; 634 | -webkit-box-shadow: 0 2px 2px rgba(0,0,0,.1); 635 | box-shadow: 0 2px 2px rgba(0,0,0,.1); 636 | -moz-border-radius: 2px; 637 | -webkit-border-radius: 2px; 638 | -khtml-border-radius: 2px; 639 | border-radius: 2px; 640 | border: 1px solid #d2d2d2; 641 | z-index: 100; 642 | _position: absolute; 643 | display:none; 644 | } 645 | .oss-module-context-menu li{ 646 | padding-left: 17px; 647 | text-align: left; 648 | color: #666; 649 | display: block; 650 | border-bottom: 1px solid #E7E7E7; 651 | line-height: 27px; 652 | background: inherit; 653 | cursor: pointer; 654 | } 655 | .oss-module-context-menu li:hover{ 656 | background: #f0f8fd; 657 | } 658 | .menu-folder{ 659 | left:100px; 660 | top:100px; 661 | } 662 | 663 | 664 | 665 | .oss-module-check-actions { 666 | position: relative; 667 | height: 50px; 668 | padding: 10px 0; 669 | box-sizing: border-box; 670 | display:none; 671 | } 672 | .oss-module-check-actions .text{ 673 | margin:0 10px 0 30px; 674 | } 675 | 676 | .oss-module-check-actions a{ 677 | display: inline-block; 678 | padding: 0px 13px; 679 | color: #333; 680 | height: 28px; 681 | border-radius: 2px; 682 | background: #F0F0F0; 683 | cursor: pointer; 684 | border: 1px solid #A8A8A8; 685 | color:#666; 686 | margin-right: 10px; 687 | } 688 | .oss-module-check-actions a:hover{ 689 | color:#1A71D3; 690 | } 691 | .oss-module-check-actions a .oss-icon{ 692 | position: relative; 693 | top: 3px; 694 | margin-right: 5px; 695 | } 696 | 697 | 698 | 699 | 700 | .oss-module-upload { 701 | position: absolute; 702 | width: 700px; 703 | right: 0px; 704 | bottom: 0px; 705 | z-index: 999; 706 | background: #fff; 707 | border-top: 1px solid #ccc; 708 | border-left: 1px solid #ccc; 709 | outline: 0; 710 | -webkit-box-shadow: 0 3px 9px rgba(0,0,0,.5); 711 | box-shadow: 0 3px 9px rgba(0,0,0,.5); 712 | display:none; 713 | 714 | } 715 | .oss-module-upload .upload-title { 716 | padding: 8px 5px; 717 | border-bottom: 1px solid #ccc; 718 | background: #3E8BE3; 719 | color: #fff; 720 | 721 | } 722 | .oss-module-upload .upload-title .close{ 723 | position: absolute; 724 | right: 20px; 725 | background-position: -110px -76px; 726 | } 727 | .oss-module-upload .upload-list-wrapper{ 728 | height: 400px; 729 | overflow: auto; 730 | position:relative; 731 | } 732 | .oss-module-upload .upload-list { 733 | overflow-y: auto; 734 | width: 100%; 735 | border-collapse: collapse; 736 | table-layout: fixed; 737 | } 738 | .oss-module-upload .upload-list .upload-list-head { 739 | border-bottom: 1px solid #ccc; 740 | } 741 | .oss-module-upload .upload-list tr{ 742 | height:35px; 743 | border-bottom: 1px solid #ccc; 744 | } 745 | .oss-module-upload .upload-list tr th{ 746 | overflow: hidden; 747 | white-space: nowrap; 748 | text-overflow: ellipsis; 749 | } 750 | .oss-module-upload .upload-list tr th.list-placehoder{ 751 | position: absolute; 752 | height: 32px; 753 | background: #3E8BE3; 754 | z-index: 888; 755 | left: -2px; 756 | opacity: .2; 757 | } 758 | .oss-module-upload .upload-list tr th.o-name{ 759 | width:40%; 760 | } 761 | .oss-module-upload .upload-list tr th.o-folder{ 762 | width:30%; 763 | color: #3E8BE3; 764 | } 765 | .oss-module-upload .upload-list tr th.o-size{ 766 | width:10%; 767 | text-indent: 1em; 768 | color: #3E8BE3; 769 | } 770 | .oss-module-upload .upload-list tr th.o-status{ 771 | width:20%; 772 | color:#3E8BE3; 773 | } 774 | 775 | 776 | 777 | .oss-module-grid-view { 778 | display:block; 779 | width: 100%; 780 | box-sizing: border-box; 781 | height: 100%; 782 | padding-bottom: 77px; 783 | } 784 | .oss-module-grid-view .grid-view-content{ 785 | height: 100%; 786 | overflow: auto; 787 | } 788 | .oss-module-grid-view .grid { 789 | width: 100px; 790 | margin: 5px 7px; 791 | text-align: center; 792 | position: relative; 793 | display:inline-block; 794 | } 795 | .oss-module-grid-view .grid .grid-image{ 796 | width: 100px; 797 | height: 100px; 798 | display: table-cell; 799 | vertical-align: middle; 800 | border: 1px solid #ccc; 801 | } 802 | .oss-module-grid-view .grid .grid-image img { 803 | max-width: 100px; 804 | max-height: 100px; 805 | vertical-align: middle; 806 | width: 100px; 807 | } 808 | .oss-module-grid-view .grid .grid-name { 809 | display: block; 810 | text-overflow: ellipsis; 811 | white-space: normal; 812 | overflow: hidden; 813 | height: 1.5rem; 814 | } 815 | .oss-module-grid-view .grid .grid-check{ 816 | position: absolute; 817 | top: 0px; 818 | overflow:pointer; 819 | } -------------------------------------------------------------------------------- /public/assets/fileManager/icon/accdb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/accdb.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/avi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/avi.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/bmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/bmp.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/btn_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/btn_icon.gif -------------------------------------------------------------------------------- /public/assets/fileManager/icon/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/css.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/docx_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/docx_mac.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/docx_win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/docx_win.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/eml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/eml.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/eps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/eps.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/fla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/fla.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/gif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/gif.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/html.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/icons.gif -------------------------------------------------------------------------------- /public/assets/fileManager/icon/ind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/ind.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/ini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/ini.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/jpeg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/jpeg.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/jsf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/jsf.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/large_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/large_icon.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/midi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/midi.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/mov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/mov.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/mp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/mp3.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/mpeg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/mpeg.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/pdf.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/png.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/pptx_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/pptx_mac.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/pptx_win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/pptx_win.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/proj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/proj.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/psd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/psd.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/pst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/pst.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/pub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/pub.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/rar.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/readme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/readme.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/settings.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/text.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/tiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/tiff.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/url.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/vsd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/vsd.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/wav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/wav.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/wma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/wma.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/wmv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/wmv.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/xlsx_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/xlsx_mac.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/xlsx_win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/xlsx_win.png -------------------------------------------------------------------------------- /public/assets/fileManager/icon/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/public/assets/fileManager/icon/zip.png -------------------------------------------------------------------------------- /public/assets/fileManager/style/style.css: -------------------------------------------------------------------------------- 1 | *{ 2 | font: 12px/1.5 tahoma,arial,"宋体"; 3 | } 4 | a{ 5 | color: #06c; 6 | text-decoration: none; 7 | } 8 | 9 | .oss-icon-small{ 10 | background: url(./icon/icons.gif) 9999px 9999px no-repeat; 11 | width:20px; 12 | } 13 | .oss-icon-small.icon_mp3{ 14 | background-position: -193px -80px; 15 | } 16 | .oss-icon-small.icon_dir{ 17 | background-position: -2px 0px; 18 | } 19 | .oss-icon-small.icon-zip{ 20 | background-position: -349px 81px; 21 | } 22 | .oss-icon-small.icon_image{ 23 | background-position: -2px -80px; 24 | } 25 | .oss-icon-small.icon_txt { 26 | background-position: -162px -80px; 27 | } 28 | 29 | 30 | 31 | /** General icon */ 32 | .oss-icon { 33 | display: inline-block; 34 | min-width: 20px; 35 | min-height: 20px; 36 | background: url(../icon/btn_icon.gif) no-repeat; 37 | } 38 | .oss-icon-s{ 39 | display: inline-block; 40 | min-width: 10px; 41 | min-height: 10px; 42 | background: url(../icon/btn_icon.gif) no-repeat; 43 | } 44 | .oss-icon.share:hover{ 45 | background-position: -182px -59px; /** x + 31 */ 46 | } 47 | .oss-icon.share{ 48 | background-position: -208px -230px; 49 | } 50 | .oss-icon.blank{ 51 | background-position: -111px 3px; 52 | } 53 | .oss-icon.check{ 54 | background-position: -111px -16px; 55 | } 56 | .oss-icon.blank_b { 57 | background-position: 0 -311px; 58 | } 59 | .oss-icon.check_b { 60 | background-position: 0px -346px; 61 | } 62 | .oss-icon.download{ 63 | background-position: -207px -210px; 64 | } 65 | .oss-icon.download:hover{ 66 | background-position: -181px -39px; /** x + 31 */ 67 | } 68 | .oss-icon.download-light{ 69 | background-position: -207px -485px; 70 | } 71 | .oss-icon.download-light:hover{ 72 | background-position: -182px -37px; /** x + 31 */ 73 | } 74 | .oss-icon.more{ 75 | background-position: -208px -351px; 76 | } 77 | .oss-icon.more:hover{ 78 | background-position: -182px -308px; 79 | } 80 | .oss-icon.createfile{ 81 | background-position: 0 -416px; 82 | } 83 | .oss-icon.createfile:hover{ 84 | background-position: 0 -448px; 85 | } 86 | .oss-icon.bucket{ 87 | background-position: -0px -59px; 88 | width: 24px 89 | } 90 | .oss-icon.folder{ 91 | background-position: -0px -224px; 92 | width: 24px; 93 | } 94 | .oss-icon.upload{ 95 | background-position: -180px -280px; 96 | width: 24px; 97 | } 98 | .oss-icon.delete{ 99 | background-position: -156px -128px; 100 | } 101 | .oss-icon.delete:hover{ 102 | background-position: -230px -150px; 103 | } 104 | .oss-icon.list{ 105 | background-position: -65px -237px; 106 | width: 33px; 107 | height: 29px; 108 | } 109 | .oss-icon.list-selected{ 110 | background-position: -65px -268px; 111 | width: 33px; 112 | height: 29px; 113 | } 114 | .oss-icon.grid{ 115 | background-position: -98px -268px; 116 | width: 33px; 117 | height: 29px; 118 | } 119 | .oss-icon.grid-selected{ 120 | background-position: -98px -237px; 121 | width: 33px; 122 | height: 29px; 123 | } 124 | .oss-icon.grid:hover{ 125 | background-position: -121px -141px; 126 | width: 33px; 127 | height: 29px; 128 | } 129 | .oss-icon.list:hover{ 130 | background-position: -88px -140px; 131 | width: 33px; 132 | height: 29px; 133 | } 134 | .oss-icon.drapout{ 135 | background-position: -207px -417px; 136 | } 137 | .oss-icon.drapout:hover{ 138 | background-position: -227px -417px; 139 | } 140 | .oss-icon-s.plus{ 141 | background-position: -237px -265px; 142 | height: 11px; 143 | width: 11px; 144 | } 145 | .oss-icon-s.minus{ 146 | background-position: -237px -247px; 147 | height: 11px; 148 | width: 11px; 149 | } 150 | .oss-icon-s.smile{ 151 | background-position: -237px -265px; 152 | height: 11px; 153 | width: 11px; 154 | } 155 | .oss-icon-s.close{ 156 | background-position: -276px -42px; 157 | width: 25px; 158 | height: 25px; 159 | } 160 | .oss-icon-s.close:hover{ 161 | background-position: -251px -42px; 162 | width: 25px; 163 | height: 25px; 164 | } 165 | .oss-icon.server { 166 | background-position: -181px 3px; 167 | width: 24px; 168 | } 169 | .oss-icon.server-offline { 170 | background-position: -157px 3px; 171 | width: 24px; 172 | } 173 | .oss-icon.online { 174 | background-position: -267px -211px; 175 | } 176 | 177 | 178 | 179 | 180 | 181 | .clearfix{clear:both;} 182 | .clearfix:before { clear:both ;content: '' ;display: block;} 183 | .clearfix:after{ clear:both ;content: '' ;display: block;} 184 | 185 | .ossUploadWrapper{ 186 | position: fixed; 187 | top: 0; 188 | right: 0; 189 | bottom: 0; 190 | left: 0; 191 | z-index: 1050; 192 | overflow: hidden; 193 | -webkit-overflow-scrolling: touch; 194 | outline: 0; 195 | background: rgba(0,0,0,0.3); 196 | 197 | } 198 | .ossUpload{ 199 | position: relative; 200 | margin: 30 auto; 201 | width:1400px; 202 | -webkit-box-shadow: 0 2px 3px rgba(0,0,0,0.125); 203 | box-shadow: 0 2px 3px rgba(0,0,0,0.125); 204 | background-color: #fff; 205 | -webkit-background-clip: padding-box; 206 | background-clip: padding-box; outline: 0; 207 | -webkit-box-shadow: 0 3px 9px rgba(0,0,0,.5); 208 | box-shadow: 0 3px 9px rgba(0,0,0,.5); 209 | } 210 | 211 | .ossUploadSide{ 212 | float: left; 213 | width: 220px; 214 | height: 600px; 215 | background: #3D3D3D; 216 | border-right-width: 1px; 217 | border-right-style: solid; 218 | border-right-color: #ccc; 219 | -webkit-user-select: none; 220 | -moz-user-select: none; 221 | -ms-user-select: none; 222 | user-select: none; 223 | padding: 0 0 10px 0; 224 | box-sizing: border-box; 225 | overflow: auto; 226 | } 227 | .ossUploadBody{ 228 | position:relative; 229 | width:auto; 230 | margin-left:220px; 231 | height:600px; 232 | background-color: #fff; 233 | z-index: 200; 234 | } 235 | .ossUploadBody-head{ 236 | min-height: 16.43px; 237 | padding: 15px; 238 | border-bottom: 2px solid #e5e5e5; 239 | } 240 | .oss-titile{ 241 | margin:0px; 242 | font-weight: bolder; 243 | font-size: 18px; 244 | color: #666; 245 | 246 | } 247 | .ossUploadClose{ 248 | float: right; 249 | font-size: 17px; 250 | font-weight: 700; 251 | line-height: 1; 252 | color: #000; 253 | text-shadow: 0 1px 0 #fff; 254 | cursor:pointer; 255 | } 256 | .ossUploadBody-content{ 257 | box-sizing: border-box; 258 | -moz-box-sizing: border-box; 259 | -webkit-box-sizing: border-box; 260 | height: 100%; 261 | padding-bottom: 50px; 262 | } 263 | 264 | 265 | 266 | .ossUploadBody-foot{ 267 | position: absolute; 268 | left: 0px; 269 | bottom: 0px; 270 | height: 50px; 271 | border-top: 1px solid #BFC7B7; 272 | width: 100%; 273 | background-color: #fff; 274 | 275 | } 276 | .ossUploadBody-foot .ossReportBox { 277 | font-size: 16px; 278 | margin: 13px 0; 279 | padding-left:10px; 280 | display: none; 281 | } 282 | .ossUploadBody-foot .ossReportBox .ossReport-name { 283 | font-weight: bolder; 284 | color: #0066CC; 285 | margin-right: 10px; 286 | font-size: 14px; 287 | } 288 | .ossUploadBody-foot .ossReportBox .ossReport-value { 289 | color:#333; 290 | } 291 | 292 | 293 | 294 | 295 | .ossFolder-list { 296 | list-style: none; 297 | margin: 0px; 298 | padding: 0px; 299 | } 300 | .ossFolder{ 301 | font-size: 13px; 302 | color: #333; 303 | cursor: pointer; 304 | position: relative; 305 | } 306 | .activeFolder.select-placeholder{ 307 | display: block; 308 | } 309 | .currentFolder.select-placeholder{ 310 | display: block; 311 | } 312 | .select-placeholder { 313 | height: 23px; 314 | position: absolute; 315 | display: none; 316 | /* top: 0px; */ 317 | margin-top: 3px; 318 | width: 200px; 319 | background: #217ADC; 320 | filter: alpha(opacity=20); 321 | opacity: 0.3; 322 | padding: 0 5px; 323 | } 324 | 325 | .select-placeholder.active{ 326 | display:block; 327 | } 328 | 329 | .folder-icon{ 330 | margin-right: 3px; 331 | position: relative; 332 | top: 4px; 333 | } 334 | .ossFolder .ossFolder{ 335 | padding-left: 13px; 336 | } 337 | .ossFolderCreate { 338 | font-size: 13px; 339 | color: #333; 340 | cursor: pointer; 341 | position: relative; 342 | padding-left: 26px; 343 | top:2px; 344 | display:none; 345 | min-width: 180px; 346 | } 347 | 348 | 349 | .folder-collapse { 350 | color: #999; 351 | position: relative; 352 | } 353 | .folder-name { 354 | position:relative; 355 | } 356 | .folder-name .edit-name{ 357 | height: 23px; 358 | position: absolute; 359 | margin: 0px; 360 | top: -6px; 361 | left: 0px; 362 | display:none; 363 | } 364 | .folder-name .edit-name .edit-name-box{ 365 | width: 130px; 366 | } 367 | 368 | 369 | 370 | /** crumb **/ 371 | .oss-module-crumbs { 372 | padding: 5px 0; 373 | position: relative; 374 | z-index: 95; 375 | } 376 | .oss-module-crumbs .ossCrumbs{ 377 | display:none; 378 | padding: 0 0 0 25px; 379 | color: rgb(0, 102, 204); 380 | } 381 | .oss-module-crumbs .ossCrumbs .crumb-item{ 382 | display: inline-block; 383 | max-width: 120px; 384 | white-space: nowrap; 385 | text-overflow: ellipsis; 386 | overflow: hidden; 387 | vertical-align: top; 388 | 389 | } 390 | .oss-module-crumbs .ossCrumbs .crumb-item-span{ 391 | color:#333; 392 | } 393 | .oss-module-crumbs .ossCrumbs .crumb-item.current{ 394 | color:#333; 395 | } 396 | .oss-module-crumbs .ossCrumbs-status{ 397 | float:right; 398 | margin-right:20px; 399 | } 400 | 401 | 402 | .oss-module-toolbar{ 403 | position: relative; 404 | z-index: 99; 405 | } 406 | .oss-module-toolbar .oss-bar{ 407 | border-bottom: 1px solid #d2d2d2; 408 | background: #F7F7F7 left -53px repeat-x; 409 | padding: 10px 0px; 410 | } 411 | .oss-module-toolbar .oss-bar .toolbar-grid-view{ 412 | float:right; 413 | margin-right: 20px; 414 | } 415 | .oss-module-toolbar .oss-bar .toolbar-list-view{ 416 | float:right; 417 | 418 | } 419 | .oss-module-toolbar .tool:hover{ 420 | color:red; 421 | } 422 | /** 上传按钮 */ 423 | .oss-module-toolbar .oss-bar .toolbar-upload{ 424 | position:relative; 425 | display: inline-block; 426 | height: 28px; 427 | line-height: 26px; 428 | line-height: 29px\9; 429 | color: #666; 430 | vertical-align: middle; 431 | margin: 0 0 0 5px; 432 | _position: relative; 433 | _top: 12px; 434 | padding: 0 10px; 435 | color: #fff; 436 | border-radius: 2px; 437 | background-color: #1A71D3; 438 | margin-left: 15px; 439 | background: -webkit-linear-gradient(top,#1778E6,#5399E8); 440 | background: -moz-linear-gradien(top,#1778E6,#5399E8); 441 | background: linear-gradient(top,#1778E6,#5399E8); 442 | } 443 | .oss-module-toolbar .oss-bar .toolbar-upload input{ 444 | position: absolute; 445 | width: 95px; 446 | height: 28px; 447 | left: 0px; 448 | filter: alpha(opacity=00); 449 | opacity: 0; 450 | } 451 | .oss-module-toolbar .oss-bar .toolbar-upload .oss-icon{ 452 | position:relative; 453 | top:3px; 454 | } 455 | 456 | .oss-module-toolbar .oss-bar .toolbar-new-dir{ 457 | display: inline-block; 458 | } 459 | .oss-module-toolbar .oss-bar .toolbar-new-dir .oss-icon{ 460 | width: 65px; 461 | height: 28px; 462 | line-height: 26px; 463 | line-height: 29px\9; 464 | padding-left: 31px; 465 | color: #666; 466 | vertical-align: middle; 467 | margin: 0 0 0 5px; 468 | 469 | } 470 | 471 | 472 | /** Module List View **/ 473 | .oss-module-list-view { 474 | display:none; 475 | position: relative; 476 | width: 100%; 477 | padding-left: 20px; 478 | -webkit-box-sizing: border-box; 479 | -moz-box-sizing: border-box; 480 | box-sizing: border-box; 481 | height: 100%; 482 | padding-bottom: 77px; 483 | 484 | } 485 | .list-view-home { 486 | width: 100%; 487 | text-align: left; 488 | border-collapse: collapse; 489 | display: block; 490 | overflow: auto; 491 | height: 100%; 492 | box-sizing: border-box; 493 | -moz-box-sizing: border-box; 494 | -webkit-box-sizing: border-box; 495 | } 496 | .list-view-title{ 497 | display: block; 498 | } 499 | .list-view-home .list-view-title tr { 500 | height: 40px; 501 | line-height: 41px; 502 | border-bottom: 1px solid #D2D2D2; 503 | border-top: 1px solid #D2D2D2; 504 | border-left: 1px solid #d2d2d2; 505 | background: #F7F7F7; 506 | cursor: pointer; 507 | width:100%; 508 | left: -1px; 509 | } 510 | .list-view-home tr th { 511 | padding-left:10px; 512 | } 513 | .view-list-content { 514 | display: block; 515 | overflow: auto; 516 | height: 100%; 517 | box-sizing: border-box; 518 | -moz-box-sizing: border-box; 519 | -webkit-box-sizing: border-box; 520 | height: inherit; 521 | width:100%; 522 | } 523 | .oss-module-list-view .list { 524 | position: relative; 525 | border-bottom: 1px solid #D2D2D2; 526 | display: block; 527 | cursor: pointer; 528 | width: 100%; 529 | height: 40px; 530 | 531 | } 532 | .view-list-content .list.item_active { 533 | background-color:rgb(242, 247, 255); 534 | } 535 | .view-list-content .list.item_check { 536 | background-color:rgb(242, 247, 255); 537 | } 538 | .oss-module-list-view .oss-list-check { 539 | display: inline-block; 540 | position: relative; 541 | top: 5px; 542 | } 543 | .view-list-content .list.item_active .oss-list-action{ 544 | display:block !important; 545 | cursor:pointer; 546 | } 547 | .oss-module-list-view .list th{ 548 | position:relative; 549 | display: block; 550 | height:40px; 551 | } 552 | .oss-module-list-view .list .col1 { 553 | width: 60%; 554 | float:left; 555 | padding: 5px 0 11px 4; 556 | box-sizing: border-box; 557 | 558 | } 559 | .oss-module-list-view .list .col2{ 560 | width: 20%; 561 | box-sizing: border-box; 562 | float: left; 563 | padding: 9px 0; 564 | } 565 | .oss-module-list-view .list .col3{ 566 | box-sizing: border-box; 567 | float: left; 568 | padding: 9px 0; 569 | } 570 | .view-list-content .list .col1 .oss-list-action{ 571 | position: absolute; 572 | display:none ; 573 | top: 0px; 574 | right: 15px; 575 | height: 38px; 576 | background-color: #f0f8fd; 577 | } 578 | .view-list-content .list .col1 .oss-list-action .action{ 579 | display: inline-block; 580 | height: 20px; 581 | width: 20px; 582 | margin: 10px 0 0 5px; 583 | } 584 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper{ 585 | position:relative; 586 | } 587 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper .more-list{ 588 | top: auto; 589 | bottom: 25px; 590 | } 591 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper .more-list-up{ 592 | position: absolute; 593 | top: 19px; 594 | left: -37px; 595 | width: 100px; 596 | text-align: center; 597 | background: none repeat scroll 0 0 #FFF; 598 | border: 1px solid #CFCFCF; 599 | box-shadow: 0 2px 3px #CFCFCF; 600 | border-radius: 3px; 601 | text-indent: 0; 602 | display: none; 603 | z-index: 9999; 604 | height: 112px; 605 | 606 | } 607 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper .more-list-up .more-item{ 608 | display: block; 609 | color: #666; 610 | display: block; 611 | border-bottom: 1px solid #E7E7E7; 612 | line-height: 27px; 613 | background:inherit; 614 | 615 | } 616 | .view-list-content .list .col1 .oss-list-action .action.more-wrapper .more-list-up .more-item:hover{ 617 | background-color: #f0f8fd 618 | } 619 | .view-list-content .oss-list-filename { 620 | margin-left: 5px; 621 | } 622 | .view-list-content .oss-list-icon{ 623 | position: relative; 624 | display:inline-block; 625 | top: 4px; 626 | padding: 0 3px; 627 | height:20px; 628 | } 629 | 630 | 631 | 632 | 633 | 634 | 635 | .oss-module-context-menu ul{ 636 | list-style: none; 637 | padding: 5px 5px; 638 | padding: 4px 0; 639 | width: 100px; 640 | position: fixed; 641 | background: #fefefe; 642 | -webkit-box-shadow: 0 2px 2px rgba(0,0,0,.1); 643 | box-shadow: 0 2px 2px rgba(0,0,0,.1); 644 | -moz-border-radius: 2px; 645 | -webkit-border-radius: 2px; 646 | -khtml-border-radius: 2px; 647 | border-radius: 2px; 648 | border: 1px solid #d2d2d2; 649 | z-index: 100; 650 | _position: absolute; 651 | display:none; 652 | } 653 | .oss-module-context-menu li{ 654 | padding-left: 17px; 655 | text-align: left; 656 | color: #666; 657 | display: block; 658 | border-bottom: 1px solid #E7E7E7; 659 | line-height: 27px; 660 | background: inherit; 661 | cursor: pointer; 662 | } 663 | .oss-module-context-menu li:hover{ 664 | background: #f0f8fd; 665 | } 666 | .menu-folder{ 667 | left:100px; 668 | top:100px; 669 | } 670 | 671 | 672 | 673 | .oss-module-check-actions { 674 | position: relative; 675 | height: 50px; 676 | padding: 10px 0; 677 | box-sizing: border-box; 678 | display:none; 679 | } 680 | .oss-module-check-actions .text{ 681 | margin:0 10px 0 30px; 682 | } 683 | 684 | .oss-module-check-actions a{ 685 | display: inline-block; 686 | padding: 0px 13px; 687 | color: #333; 688 | height: 28px; 689 | border-radius: 2px; 690 | background: #F0F0F0; 691 | cursor: pointer; 692 | border: 1px solid #A8A8A8; 693 | color:#666; 694 | margin-right: 10px; 695 | } 696 | .oss-module-check-actions a:hover{ 697 | color:#1A71D3; 698 | } 699 | .oss-module-check-actions a .oss-icon{ 700 | position: relative; 701 | top: 3px; 702 | margin-right: 5px; 703 | } 704 | 705 | 706 | 707 | 708 | .oss-module-upload { 709 | position: absolute; 710 | width: 700px; 711 | right: 0px; 712 | bottom: 0px; 713 | z-index: 999; 714 | background: #fff; 715 | border-top: 1px solid #ccc; 716 | border-left: 1px solid #ccc; 717 | outline: 0; 718 | -webkit-box-shadow: 0 3px 9px rgba(0,0,0,.5); 719 | box-shadow: 0 3px 9px rgba(0,0,0,.5); 720 | display:none; 721 | 722 | } 723 | .oss-module-upload .upload-title { 724 | padding: 8px 5px; 725 | border-bottom: 1px solid #ccc; 726 | background: #3E8BE3; 727 | color: #fff; 728 | 729 | } 730 | .oss-module-upload .upload-title .close{ 731 | position: absolute; 732 | right: 20px; 733 | background-position: -110px -76px; 734 | } 735 | .oss-module-upload .upload-list-wrapper{ 736 | height: 400px; 737 | overflow: auto; 738 | position:relative; 739 | } 740 | .oss-module-upload .upload-list { 741 | overflow-y: auto; 742 | width: 100%; 743 | border-collapse: collapse; 744 | table-layout: fixed; 745 | } 746 | .oss-module-upload .upload-list .upload-list-head { 747 | border-bottom: 1px solid #ccc; 748 | } 749 | .oss-module-upload .upload-list tr{ 750 | height:35px; 751 | border-bottom: 1px solid #ccc; 752 | } 753 | .oss-module-upload .upload-list tr th{ 754 | overflow: hidden; 755 | white-space: nowrap; 756 | text-overflow: ellipsis; 757 | } 758 | .oss-module-upload .upload-list tr th.list-placehoder{ 759 | position: absolute; 760 | height: 32px; 761 | background: #3E8BE3; 762 | z-index: 888; 763 | left: -2px; 764 | opacity: .2; 765 | } 766 | .oss-module-upload .upload-list tr th.o-name{ 767 | width:40%; 768 | } 769 | .oss-module-upload .upload-list tr th.o-folder{ 770 | width:30%; 771 | color: #3E8BE3; 772 | } 773 | .oss-module-upload .upload-list tr th.o-size{ 774 | width:10%; 775 | text-indent: 1em; 776 | color: #3E8BE3; 777 | } 778 | .oss-module-upload .upload-list tr th.o-status{ 779 | width:20%; 780 | color:#3E8BE3; 781 | } 782 | 783 | 784 | 785 | .oss-module-grid-view { 786 | display:block; 787 | width: 100%; 788 | box-sizing: border-box; 789 | height: 100%; 790 | padding-bottom: 77px; 791 | } 792 | .oss-module-grid-view .grid-view-content{ 793 | height: 100%; 794 | overflow: auto; 795 | } 796 | .oss-module-grid-view .grid { 797 | width: 100px; 798 | margin: 5px 7px; 799 | text-align: center; 800 | position: relative; 801 | display:inline-block; 802 | } 803 | .oss-module-grid-view .grid .grid-image{ 804 | width: 100px; 805 | height: 100px; 806 | display: table-cell; 807 | vertical-align: middle; 808 | border: 1px solid #ccc; 809 | } 810 | .oss-module-grid-view .grid .grid-image img { 811 | max-width: 100px; 812 | max-height: 100px; 813 | vertical-align: middle; 814 | width: 100px; 815 | } 816 | .oss-module-grid-view .grid .grid-name { 817 | display: block; 818 | text-overflow: ellipsis; 819 | white-space: normal; 820 | overflow: hidden; 821 | height: 1.5rem; 822 | } 823 | .oss-module-grid-view .grid .grid-check{ 824 | position: absolute; 825 | top: 0px; 826 | overflow:pointer; 827 | } -------------------------------------------------------------------------------- /public/assets/fileManager/templates/Main.template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |

<%= Title %>

5 |
6 |
7 |
8 |
    9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /public/javascripts/main.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | window.fileManager = $('#fileManager').fileManager({ 3 | 4 | //配置服务 5 | Service: [{ 6 | // 本地服务 7 | serviceName: 'local', 8 | server: 'http://localhost:3001', 9 | 10 | listBuckets: { 11 | method: 'GET', 12 | endpoint: '/api/localCloud/buckets' 13 | }, 14 | 15 | listFolders: { 16 | method: 'GET', 17 | endpoint: '/api/localCloud/folders' 18 | }, 19 | 20 | listObjects: { 21 | method: 'GET', 22 | endpoint: '/api/localCloud/objects' 23 | }, 24 | 25 | createFolder: { 26 | method: 'POST', 27 | endpoint: '/api/localCloud/folders' 28 | // post newFolderName 29 | }, 30 | 31 | // keys的删除均以队列的形式一一删除, 32 | deleteObject: { 33 | method: 'DELETE', 34 | endpoint: '/api/localCloud/object' 35 | // post deleteObjects; 36 | }, 37 | reNameObject: { 38 | method: 'PUT', 39 | endpoint: '/api/localCloud/object' 40 | }, 41 | 42 | moveObject: { 43 | method: 'POST', 44 | endpoint: '/api/localCloud/object' 45 | }, 46 | 47 | createObject: { 48 | method: 'POST', 49 | endpoint: '/api/localCloud/file' 50 | }, 51 | downloadObject: { 52 | method: 'GET', 53 | endpoint: '/api/localCloud/object' 54 | } 55 | 56 | }, { 57 | serviceName: '阿里云OSS', 58 | server: 'http://localhost:3001', 59 | listBuckets: { 60 | method: 'GET', 61 | endpoint: '/api/aliyunOss/buckets' 62 | }, 63 | listObjects: { 64 | method: 'GET', 65 | endpoint: '/api/aliyunOss/objects' 66 | } 67 | }], 68 | 69 | // 70 | Title: 'Great File Manager', 71 | debug: true 72 | }); 73 | }); 74 | -------------------------------------------------------------------------------- /public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /screenshot/Screen Shot 2016-02-17 at 6.31.26 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/screenshot/Screen Shot 2016-02-17 at 6.31.26 PM.png -------------------------------------------------------------------------------- /screenshot/Screen Shot 2016-02-17 at 6.31.28 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/screenshot/Screen Shot 2016-02-17 at 6.31.28 PM.png -------------------------------------------------------------------------------- /screenshot/Screen Shot 2016-02-17 at 6.31.37 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/screenshot/Screen Shot 2016-02-17 at 6.31.37 PM.png -------------------------------------------------------------------------------- /screenshot/Screen Shot 2016-02-17 at 6.31.38 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/screenshot/Screen Shot 2016-02-17 at 6.31.38 PM.png -------------------------------------------------------------------------------- /uploads/16c31b8b8e17e327add370988aa89dea: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/16c31b8b8e17e327add370988aa89dea -------------------------------------------------------------------------------- /uploads/6145a07746bc65377b9a7d87e2cdda65: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/6145a07746bc65377b9a7d87e2cdda65 -------------------------------------------------------------------------------- /uploads/71cde446f4eed5721c83ec1a98741f1e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/71cde446f4eed5721c83ec1a98741f1e -------------------------------------------------------------------------------- /uploads/7bf7616ab81c66ca8036c560f9951e8f: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/7bf7616ab81c66ca8036c560f9951e8f -------------------------------------------------------------------------------- /uploads/95e7cd1145acafd5ca48ed316aa9ff5c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/95e7cd1145acafd5ca48ed316aa9ff5c -------------------------------------------------------------------------------- /uploads/a2a31f14c5661127f623c77c78042915: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/a2a31f14c5661127f623c77c78042915 -------------------------------------------------------------------------------- /uploads/bab94413024d52a49e0b27f8256d225c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/bab94413024d52a49e0b27f8256d225c -------------------------------------------------------------------------------- /uploads/c3e88daadeb1e1bc86a36125e08a0488: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/c3e88daadeb1e1bc86a36125e08a0488 -------------------------------------------------------------------------------- /uploads/db6a03d8824a8c0c7e9d5464c4fe60ab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/db6a03d8824a8c0c7e9d5464c4fe60ab -------------------------------------------------------------------------------- /uploads/faebe36a3564715048e4b36589b40560: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markstock7/FileManager/50572778825dea6b6fdb34c9ae950d9915743e4c/uploads/faebe36a3564715048e4b36589b40560 -------------------------------------------------------------------------------- /views/error.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= message 5 | h2= error.status 6 | pre #{error.stack} 7 | -------------------------------------------------------------------------------- /views/index.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= title 5 | p Welcome to #{title} 6 | #fileManager 7 | 8 | -------------------------------------------------------------------------------- /views/layout.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | head 4 | title= title 5 | meta(charset="UTF-8") 6 | link(rel='stylesheet', href='/jquery-ui/themes/base/jquery-ui.min.css') 7 | link(rel='stylesheet', href='/assets/fileManager/style/fileManager.css') 8 | link(rel='stylesheet', href='/assets/fileManager/style/style.css') 9 | link(rel='stylesheet', href="/stylesheets/style.css") 10 | 11 | body 12 | block content 13 | script(src="/jquery/dist/jquery.min.js") 14 | script(src="/jquery-ui/jquery-ui.min.js") 15 | script(src="/jsrender/jsrender.min.js") 16 | script(src="/underscore/underscore-min.js") 17 | script(src="/assets/fileManager/fileManager.js") 18 | script(src="/javascripts/main.js") 19 | --------------------------------------------------------------------------------