Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
8432833
Add bower and change package info
codedogfish Dec 2, 2015
da36367
Add demo dependencies in bower
codedogfish Dec 2, 2015
b89cfaa
Refact demo folder
codedogfish Dec 2, 2015
ec6ea25
Rewrite Gruntfile.js
codedogfish Dec 2, 2015
4ee91a9
Merge pull request #101 from codedogfish/improve_project
codedogfish Dec 3, 2015
26d7fbb
Add comments in qiniu.js
codedogfish Dec 3, 2015
02d598a
Adjust some comments
codedogfish Dec 3, 2015
9d21aab
Merge pull request #102 from codedogfish/improve_comment
codedogfish Dec 3, 2015
c2e5905
Wrap sdk with self-invoking
codedogfish Dec 4, 2015
55e4375
Merge pull request #103 from codedogfish/fix_issues_from_20151101_to_…
codedogfish Dec 4, 2015
7c3024f
Fix wechat and qq inner browser uploader error
codedogfish Dec 4, 2015
15913c5
Merge pull request #104 from codedogfish/fix_issues_from_20151101_to_…
codedogfish Dec 8, 2015
9dd2a97
Fix IE 7 compability
codedogfish Dec 9, 2015
cc5c8df
Enhance the logger
codedogfish Dec 9, 2015
8047310
Merge pull request #105 from codedogfish/fix_issues_from_20151101_to_…
codedogfish Dec 9, 2015
a3f2388
Support chunk upload in flash runtime
codedogfish Dec 10, 2015
aa85ffc
Make localStorage fallback with cookie
codedogfish Dec 28, 2015
ca57761
Merge pull request #106 from codedogfish/fix_issues_from_20151101_to_…
codedogfish Dec 28, 2015
dac52c3
add some common problem
netdxy Jan 18, 2016
edb87ce
Merge pull request #112 from netdxy/develop
codedogfish Jan 19, 2016
4974e3d
Change upload url in case of net error
codedogfish Jan 25, 2016
65622d8
Merge pull request #114 from codedogfish/fix_issues_from_20151101_to_…
codedogfish Feb 1, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.DS_Store
Gruntfile.js
node_modules
bower_components
demo/config.js
5 changes: 4 additions & 1 deletion .jshintrc
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,8 @@
// Enviroments
"browser": true, // globals exposed by modern browsers, like document, window, etc.
"devel": true, // globals that are usually used for logging poor-man's debugging: console, alert, etc.
"jquery": true // jquery library
"jquery": true, // jquery library

"node": true,
"evil": true
}
11 changes: 9 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
language: node_js
node_js:
- "0.12"
- "iojs"
- "iojs-v1.0.4"
cache:
directories:
- node_modules
- bower_components
install:
- npm install
- bower install
script:
- grunt
59 changes: 0 additions & 59 deletions Gruntfile.coffee

This file was deleted.

85 changes: 85 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
module.exports = function( grunt ) {

"use strict";

grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
jshint: {
dist: {
src: [ "dist/qiniu.js" ],
options: {
jshintrc: ".jshintrc"
}
},
grunt: {
src: [ "Gruntfile.js" ],
options: {
jshintrc: ".jshintrc"
}
},
},
build: {
all: {
dest: "dist/qiniu.js",
src: ["src/qiniu.js"]
}
},
uglify: {
all: {
files: {
"dist/qiniu.min.js": [ "dist/qiniu.js" ]
},
options: {
banner: "/*! <%= pkg.name %> v<%= pkg.version %> | Copyright 2015 by Qiniu */",
sourceMap: "dist/qiniu.min.map",
compress: {
hoist_funs: false,
join_vars: false,
loops: false,
unused: false
},
beautify: {
ascii_only: true
}
}
}
}
});

grunt.registerMultiTask(
"build",
"Embed date/version",
function() {

var source = grunt.file.read( "src/qiniu.js" ),
version = grunt.config( "pkg.version" );

// Embed Version
// Embed Date
source = source.replace( /@VERSION/g, version )
.replace( "@DATE", function () {
var date = new Date();

// YYYY-MM-DD
return [
date.getFullYear(),
date.getMonth() + 1,
date.getDate()
].join( "-" );
});

// Write concatenated source to file
grunt.file.write( "dist/qiniu.js", source );

// Otherwise, print a success message.
grunt.log.writeln( "File 'dist/qiniu.js' created." );
});

grunt.loadNpmTasks("grunt-contrib-watch");
grunt.loadNpmTasks("grunt-contrib-uglify");
grunt.loadNpmTasks("grunt-contrib-jshint");
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.loadNpmTasks("grunt-contrib-concat");

grunt.registerTask( "default", [ "build", "jshint", "uglify" ] );
};
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ install : all

all :
npm install
bower install
grunt
node demo/server.js
94 changes: 94 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,98 @@ qiniu-js-sdk
* Plupload ,建议 2.1.1 及以上版本
* qiniu.js,SDK主体文件,上传功能\数据处理实现

### 常见问题

七牛提供基于plupload插件封装上传的demo `http://jssdk.demo.qiniu.io/`,如果不需要plupload插件可以参考`https://github.com/iwillwen/qiniu.js/tree/develop`,这里主要针对基于plupload插件的方式讲解遇到的一些问题,通过参考plupload文档资料,可以对七牛的demo进行修改,以满足自己的业务需求,plupload插件的使用文档可以参考`http://www.cnblogs.com/2050/p/3913184.html`

**1.关于上传文件命名问题,可以参考:**
在main.js里面,unique_names是plupload插件下面的一个参数,当值为true时会为每个上传的文件生成一个唯一的文件名,这个是plupload插件自动生成的,如果设置成false,七牛这边是会以上传的原始名进行命名的。
1).上传的socpe为bucket的形式,unique_names参数设置为false,上传后文件的key是本地的文件名abc.txt
2).上传的scope为bucket的形式,unique_names参数设置为true,plupload插件会忽略本地文件名,而且这个命名也是没有规律的,上传后文件的key是plupload插件生成的,比如Yc7DZRS1m73o.txt。
3).上传的scope为bucket:key的形式,上传文件本地的名字需要和scope中的key是一致的,不然会报错key doesn‘t match with scope, 注意,这种形式是不能设置unique_names为true的,因为即使上传文件本地名字为abc.txt,但是plupload会给这个文件赋值另外一个文件名。
4).上传的scope为bucket,但是token中有设定saveKey,这种形式save_key是应该设置为true,并且上传的本地文件名也是需要和这个savekey文件名一致的。
5).通过JS前端设置上传的key,在main.js文件里面设置如下:
```
'Key': function(up, file) {
var key = "";
// do something with key
return key
}
```
这个默认是注销的,若想在前端对每个文件的key进行个性化处理,可以配置该函数
该配置必须要在 unique_names: false , save_key: false 时才生效
取消注销后,其优先级要高于:qiniu.js文件中getFileKey。

**2.设置自定义预览样式**
```
该设置在ui.js 文件里,默认为
var imageView =‘?imageView2/1/w/100/h/100’
可修改成
var imageView = ‘样式符+样式名’
```

**3.关于设置取消上传可以参考:**
http://stackoverflow.com/questions/11014384/cancel-file-upload-listener
(文件plupload.dev.js 1950行 removeFile : function(file) 方法)

**4.限制上传文件的类型:**
这里又分为两种方法:
1).通过在token中设定mimeLimit字段限定上传文件的类型,示例
“image/*“表示只允许上传图片类型;
“image/jpeg;image/png”表示只允许上传jpg和png类型的图片;
“!application/json;text/plain”表示禁止上传json文本和纯文本。(注意最前面的感叹号)
2).通过plupload中设定filter参数直接在JS前端限定,如下
```
//可以使用该参数来限制上传文件的类型,大小等,该参数以对象的形式传入,它包括三个属性:
filters : {
max_file_size : '100mb',
prevent_duplicates: true,
//Specify what files to browse for
mime_types: [
{title : "flv files", extensions : "flv"} //限定flv后缀上传格式上传
{title : "Video files", extensions : "flv,mpg,mpeg,avi,wmv,mov,asf,rm,rmvb,mkv,m4v,mp4"}, //限定flv,mpg,mpeg,avi,wmv,mov,asf,rm,rmvb,mkv,m4v,mp4后缀格式上传
{title : "Image files", extensions : "jpg,gif,png"}, //限定jpg,gif,png后缀上传
{title : "Zip files", extensions : "zip"} //限定zip后缀上传
]
},

```

**5.设置每次只能选择一个文件**
通过plupload插件中的multi_selection参数控制,如下
```
//设置一次只能选择一个文件
multi_selection: false,
```

**6.设置取消上传,暂停上传**
在index.html中加入者两个控制按钮:
```
<a class="btn btn-default btn-lg " id="up_load" href="#" >
<span>确认上传</span>
</a>
<a class="btn btn-default btn-lg " id="stop_load" href="#" >
<span>暂停上传</span>
</a>
```
然后在main.js文件里面绑定这两个按钮,添加代码如下:
```
$('#up_load').on('click', function(){
uploader.start();
});
$('#stop_load').on('click', function(){
uploader.stop();
});
```

**7.取消分片上传**
将main.js 里面 chunk_size: '4mb'设置chunk_size: '0mb' ,注意分片上传默认也只能是4M,如果设置一个别的分片的大小会出现上传失败。

**8.取消自动上传**
将main.js文件auto_start参数改成auto_start: false

**9.关于请求token出现跨域**
因为都是建议用户从后端SDK获取token,然后在main.js设置参数uptoken_url: '获取uptoken的url', 这里就有可能出现跨域的现象,此时在服务端添加 response.setHeader("Access-Control-Allow-Origin","*"); 相应头字段即可。

## 安装和运行程序
* 服务端准备
Expand Down Expand Up @@ -382,3 +474,5 @@ qiniu-js-sdk
## 基于 GPL V2 协议发布:

> [www.gnu.org/licenses/gpl-2.0.html](http://www.gnu.org/licenses/gpl-2.0.html)


25 changes: 25 additions & 0 deletions bower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "qiniu-js-sdk",
"description": "基于七牛API及Plupload开发的前端JavaScript SDK",
"main": "dist/qiniu.js",
"license": "GPL V2",
"homepage": "https://github.com/qiniu/js-sdk",
"moduleType": [],
"private": false,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"plupload": "=2.1.1"
},
"devDependencies": {
"bootstrap": "~3.3.6",
"highlight": "~8.9.1",
"jquery": "~1.9.1",
"respond": "~1.4.2"
}
}
Loading