summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/client/api/crud.upload.js16
-rw-r--r--app/client/common/fileUpload.component.js12
-rw-r--r--app/client/modules/samplernn/datasets.component.js10
-rw-r--r--app/client/modules/samplernn/samplernn.reducer.js10
-rw-r--r--app/server/site.js28
-rw-r--r--app/server/util/upload.js2
6 files changed, 52 insertions, 26 deletions
diff --git a/app/client/api/crud.upload.js b/app/client/api/crud.upload.js
index f680a74..97b6769 100644
--- a/app/client/api/crud.upload.js
+++ b/app/client/api/crud.upload.js
@@ -1,12 +1,20 @@
import { as_type } from './crud.types'
-export function crud_upload(type, id, fd, dispatch) {
+export function crud_upload(type, fd, data, dispatch) {
return new Promise( (resolve, reject) => {
+ const id = data.id
+
+ Object.keys(data).forEach(key => {
+ if (key !== 'id') {
+ fd.append(key, data[key])
+ }
+ })
+
const xhr = new XMLHttpRequest()
xhr.upload.addEventListener("progress", uploadProgress, false)
xhr.addEventListener("load", uploadComplete, false)
xhr.addEventListener("error", uploadFailed, false)
- xhr.addEventListener("abort", uploadCanceled, false)
+ xhr.addEventListener("abort", uploadCancelled, false)
xhr.open("POST", '/' + type + '/' + id + '/upload/')
xhr.send(fd)
@@ -47,7 +55,7 @@ export function crud_upload(type, id, fd, dispatch) {
})
}
- uploadFailed = function (evt) {
+ function uploadFailed (evt) {
dispatch && dispatch({
type: as_type(type, 'upload_error'),
error: 'upload failed',
@@ -55,7 +63,7 @@ export function crud_upload(type, id, fd, dispatch) {
})
}
- uploadCancelled = function (evt) {
+ function uploadCancelled (evt) {
dispatch && dispatch({
type: as_type(type, 'upload_error'),
error: 'upload cancelled',
diff --git a/app/client/common/fileUpload.component.js b/app/client/common/fileUpload.component.js
index 5a1291c..e723a0c 100644
--- a/app/client/common/fileUpload.component.js
+++ b/app/client/common/fileUpload.component.js
@@ -7,6 +7,18 @@ class FileUpload extends Component {
}
handleChange(e){
this.props.onChange && this.props.onChange()
+ e.stopPropagation()
+ e.preventDefault()
+ this.setState({ thumbnails: [], images: [] })
+ const files = e.dataTransfer ? e.dataTransfer.files : e.target.files
+ let i, f
+ for (i = 0, f; i < files.length; i++) {
+ f = files[i]
+ if (!f) continue
+ break
+ // if (!f.type.match(this.props.mime)) continue
+ }
+ this.props.onUpload && this.props.onUpload(f)
}
render() {
return (
diff --git a/app/client/modules/samplernn/datasets.component.js b/app/client/modules/samplernn/datasets.component.js
index b6df614..533b108 100644
--- a/app/client/modules/samplernn/datasets.component.js
+++ b/app/client/modules/samplernn/datasets.component.js
@@ -54,14 +54,15 @@ class SampleRNNDatasets extends Component {
}
handleUpload(file) {
const folder = this.props.samplernn.folder
- this.props.actions.file.create({
- folder_id: folder.id,
+ const fd = new FormData()
+ fd.append('file', file)
+ this.props.actions.folder.upload(fd, {
+ id: folder.id,
module: 'samplernn',
activity: 'url',
epoch: 0,
processed: false,
generated: false,
- url
})
}
handleURL(url) {
@@ -133,7 +134,8 @@ class SampleRNNDatasets extends Component {
{samplernn.folder.id &&
<FileUpload
title='Upload a file'
- onChange={this.handleUpload}
+ mime='image.*'
+ onUpload={this.handleUpload}
/>
}
{samplernn.folder.id &&
diff --git a/app/client/modules/samplernn/samplernn.reducer.js b/app/client/modules/samplernn/samplernn.reducer.js
index c8e9635..e486e3f 100644
--- a/app/client/modules/samplernn/samplernn.reducer.js
+++ b/app/client/modules/samplernn/samplernn.reducer.js
@@ -46,6 +46,16 @@ const samplernnReducer = (state = samplernnInitialState, action) => {
files: [action.data].concat(this.files)
}
return
+ case types.folder.upload_error:
+ console.log(action)
+ return state
+ case types.folder.upload_progress:
+ console.log(action)
+ return state
+ case types.folder.upload_complete:
+ console.log(action)
+ return state
+
default:
return state
}
diff --git a/app/server/site.js b/app/server/site.js
index f2c6b93..8e856fc 100644
--- a/app/server/site.js
+++ b/app/server/site.js
@@ -28,15 +28,15 @@ const api_tasks = api(app, 'task')
upload.init()
// app.use('/upload', require('./upload'))
-app.post('/folders/:id/upload/',
+app.post('/folder/:id/upload/',
multer.array('file'),
function (req, res, next){
if (! req.files || ! req.files.length) {
res.json({ error: "no files" })
return
}
- var thread_id = res.thread.get('id')
- var dirname = process.env.S3_PATH + '/data/' + thread_id + '/'
+ var folder_id = req.params.id
+ var dirname = process.env.S3_PATH + '/data/' + folder_id + '/'
var promises = req.files.map((file) => {
return new Promise( (resolve, reject) => {
upload.put({
@@ -46,28 +46,22 @@ app.post('/folders/:id/upload/',
unacceptable: function(err){
reject(err)
},
- success: function(url){
+ success: function(url, filename){
console.log("file >", url)
var data = {
folder_id: req.params.id,
- name: fn,
+ name: filename.replace(/-/g,'_').replace(/\s/g,'_').replace(/_+/g,'_'),
+ url,
size: file.size,
+ activity: req.body.activity || 'url',
+ module: req.body.module,
+ epoch: 0,
generated: false,
processed: false,
-
- thread: res.thread.get('id'),
- username: req.user.get('username'),
- filename: file.originalname,
- date: util.now(),
- size: file.size,
- privacy: false,
- storage: process.env.S3_BUCKET,
+ // username: req.user.get('username'),
}
- const fn = file.originalname
- api_files.create({
- // table.string('username')
- }).then( (file) => {
+ api_files.create(data).then( (file) => {
resolve(file)
}).catch( (err) => {
console.warn(err)
diff --git a/app/server/util/upload.js b/app/server/util/upload.js
index 07405f9..477264a 100644
--- a/app/server/util/upload.js
+++ b/app/server/util/upload.js
@@ -77,7 +77,7 @@ module.exports.put = function (opt) {
var file_url = s3res.url || s3res.req.url
- opt.success && opt.success(file_url)
+ opt.success && opt.success(file_url, filename)
}).on('error', function(err, s3res){
console.error(err)
s3res && s3res.resume && s3res.resume()