Giter Club home page Giter Club logo

react-qiniu's Introduction

react-qiniu

React Component to upload file to Qiniu

See Demo: http://lenage.com/react-qiniu/

Usage

Just require('react-qiniu') and specify an onDrop method that accepts an array of dropped files and pass your Qiniu token as prop.

You can also specify a style object to apply to the Drop Zone. Optionally pass in a size property to configure the size of the Drop Zone.

var React = require('react');
var Qiniu = require('react-qiniu');

var ReactQiniuDemo = React.createClass({
    getInitialState: function () {
        return {
            files: [],
            token: 'YOUR_UPLOAD_TOKEN',
            uploadKey: 'YOUR_CUSTOM_UPLOAD_KEY', // Optional
            prefix: 'YOUR_QINIU_KEY_PREFIX' // Optional
        };
    },

    onUpload: function (files) {
        // set onprogress function before uploading
        files.map(function (f) {
            f.onprogress = function(e) {
                console.log(e.percent);
                };
        });
    },

    onDrop: function (files) {
        this.setState({
            files: files
        });
        // files is a FileList(https://developer.mozilla.org/en/docs/Web/API/FileList) Object
        // and with each file, we attached two functions to handle upload progress and result
        // file.request => return super-agent uploading file request
        // file.uploadPromise => return a Promise to handle uploading status(what you can do when upload failed)
        // `react-qiniu` using bluebird, check bluebird API https://github.com/petkaantonov/bluebird/blob/master/API.md
        // see more example in example/app.js
      console.log('Received files: ', files);
    },

    render: function () {
      return (
          <div>
            <Qiniu onDrop={this.onDrop} size={150} token={this.state.token} uploadKey={this.state.uploadKey} onUpload={this.onUpload}>
              <div>Try dropping some files here, or click to select files to upload.</div>
            </Qiniu>
          </div>
      );
    }
});

React.render(<ReactQiniuDemo />, document.body);

when upload, we will add a promise to file object, see index.js, so, you can deal with this promise to handle upload status. (do something when success/failure)

see more in example/app.js

Contributing

  1. Fork it ( https://github.com/lingochamp/react-qiniu/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Thanks

@paramaggarwal @mingxinstar

License

MIT

react-qiniu's People

Contributors

andrelion avatar bugkiwi avatar lenage avatar li2go avatar mingxinstar avatar tzwm avatar zts0813 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-qiniu's Issues

error

onDrop: React.PropTypes.func.isRequired,
^
TypeError: Cannot read property 'func' of undefined
react 16

响应时间慢

在chrome浏览器中,点击上传区域的时候,需要过将近10s的时间才会把上传窗口打开,这是哪里耗费了时间?想了解下。

bug

upload .mp4
Origin is not allowed by Access-Control-Allow-Origin

定制化key

上传图片时,我需要自定义key值,好像没有支持自定义key的功能

Unhandled rejection SuperagentPromiseError: cannot POST http://upload.qiniu.com (400)

请教一下各位,上传图片,这个错误如何解决?
Unhandled rejection SuperagentPromiseError: cannot POST http://upload.qiniu.com (400)
at eval (eval at 1900 (http://localhost:8000/6.async.js:55:2), :68:19)
at Request.callback (eval at 1938 (http://localhost:8000/6.async.js:321:2), :804:3)
at Request.eval (eval at 1938 (http://localhost:8000/6.async.js:321:2), :527:10)
at Request.Emitter.emit (eval at 1939 (http://localhost:8000/6.async.js:328:2), :133:20)
at XMLHttpRequest.xhr.onreadystatechange (eval at 1938 (http://localhost:8000/6.async.js:321:2), :886:10)

onDrop时 superagent-bluebird-promise 报错

onDrop时 superagent-bluebird-promise 报错

Uncaught TypeError: (intermediate value).cancellable is not a function

Request.promise @ index.js:76
React.createClass.onDrop @ index.js:82
LinkedValueUtils.executeOnChange @ LinkedValueUtils.js:129
_handleChange @

报错代码:

Request.prototype.promise = function() {
  var req = this;
  var error;

  return new Promise(function(resolve, reject) {
      req.end(function(err, res) {
        if (typeof res !== "undefined" && res.status >= 400) {
          var msg = 'cannot ' + req.method + ' ' + req.url + ' (' + res.status + ')';
          error = new SuperagentPromiseError(msg);
          error.status = res.status;
          error.body = res.body;
          error.res = res;
          reject(error);
        } else if (err) {
          reject(new SuperagentPromiseError('Bad request', err));
        } else {
          resolve(res);
        }
      });
    })
    .cancellable()   // <-- 此行报错。
    .caught(Promise.CancellationError, function(err) {
      req.abort();
      throw err;
    });
};

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.