上传文件-Upload

上传文件是网站必不可少的功能,框架内置文件上传功能。
系统变量为Upload,同时也可以手动引用,方法如下:

var Upload = require("net/upload.js");

处理上传数据

语法

bool Upload.accept(option);

参数 - option

{
    AllowFileTypes : "",    //可上传文件类型,例如:*.jpg;*.png;*.bmp;*.gif
    AllowMaxSize : 0,        //允许上传的总文件大小,默认为0不限制
    AllowMaxFileSize : 0    //允许上传的单个文件大小,默认为0不限制
    Charset : "utf-8",        //文本编码
    /*文件保存目录,也可以在保存文件前使用opt方法设置:Upload.opt("SavePath","xxxxxx");*/
    SavePath : "",
    /*设置为false, 不将异常发送到全局的ExceptionManager,只保存在Upload.exception里面.*/
    RaiseServerError : false,
    OnSucceed : function(option){}, //上传处理成功时的回调函数
    OnError : function(exception) //上传处理失败时的回调函数
}
回调函数 - OnSucceed

可接受一个参数,即上传组件的配置;函数内部的this引用即为Upload对象;

回调函数 - OnError

可接受一个参数,即异常信息;函数内部的this引用即为Upload对象;

返回

返回true/false,返回false时,可用Upload.exception获取异常信息


保存文件 - Upload.save

函数原型

bool Upload.save(file, opt);
bool Upload.save(name, opt);
bool Upload.save(opt);

文件保存参数 - file

文件对象,属性如下。

{
    ContentType : "",    //文件类型。只读
    Size : 0,             //文件大小。只读
    UsersetName : "",    // 自定义文件名称。
    Path : "",             //文件的保存目录。只读
    Position : 0 ,         //文件流位置。只读
    FormName : "",        //文件表单名。只读
    NewName : "",         //自动生成的文件名。
    FileName : "",        //文件名称(文件保存成功后有效)。只读
    LocalName : "",        //客户端传递过来的文件名称。只读
    Extend : "",        //文件后缀。只读
    Succeed : false,     //文件是否保存成功。只读
    Exception : ""        //保存文件时的异常信息。只读
}

文件保存参数 - name

表单名:保存指定表单名的文件,如果传递空字符串,则保存所有上传的文件。

文件保存参数 - opt

{
    OverWrite : true, //覆盖同名文件
    Type : UploadSaveType.NEW, //文件保存方式,默认为NEW
    UsersetName : "", //自定义文件名(不含后缀),Type为UploadSaveType.USER时有效
    OnError : function(exception){},
    OnSucceed : function(fileCount,fileArray){}
}
文件保存方式 - UploadSaveType
UploadSaveType = {
    NONE, //原文件名保存
    NEW,//根据日期自动生成新文件名保存
    USER//用户自定义文件名
};
回调函数 - OnError

参数:exception,文件保存失败时的错误信息

回调函数 - OnSucceed

参数:fileCount,保存成功的文件数量
参数:fileArray,保存成功的文件对象数组。


示例代码

HTML部分

表单(form):
选择项(select):
文件1(file1):
文件2(file2):

服务端部分

Upload.accept({
    AllowFileTypes : "*.jpg;*.png",
    AllowMaxSize : "1Mb",
    Charset : "utf-8",
    SavePath : __dirname + "\\upload",
    RaiseServerError : false
    OnError:function(e,cfg){            /*上传出错时的事件. */
        F.echo(e);
    },
    OnSucceed:function(cfg){
        var filecount = this.files.length;  /*获取上传文件的总数目*/
        var form1 = F.post("form1");        /*获取表单值*/
        var select1 = F.post("select1");    /*获取表单值*/

        /*保存文件1,支持html5上传*/
        this.save("file1", {
            OnError : function(e){
                F.echo(e);
            },
            OnSucceed : function(count,files){
                /* files为保存成功的文件数组 */
                //"文件'" + files[0].LocalName + "'上传成功
                //保存位置'" + files[0].Path + files[0].FileName + "'
                //文件大小" + files[0].Size + "字节");
            }
        });
    }
});

服务端的另外一种写法

var result = Upload.accept({
    AllowFileTypes : "*.jpg;*.png",
    AllowMaxSize : "1Mb",
    Charset : "utf-8",
    SavePath : __dirname + "\\upload",
    RaiseServerError : false
});
if(!result){
    F.echo(Upload.exception);
}else{
    var filecount = Upload.files.length;    /*获取上传文件的总数目*/
    var form1 = F.post("form1");        /*获取表单值*/
    var select1 = F.post("select1");    /*获取表单值*/

    /*保存文件1,支持html5上传*/
    Upload.save("file1", {
        OnError : function(e){
            F.echo(e);
        },
        OnSucceed : function(count,files){
            /* files为保存成功的文件数组 */
            //"文件'" + files[0].LocalName + "'上传成功
            //保存位置'" + files[0].Path + files[0].FileName + "'
            //文件大小" + files[0].Size + "字节");
        }
    });
}

发表评论评论(0)