大漠
大漠
  • 发布:2015-02-26 17:22
  • 更新:2015-07-10 09:51
  • 阅读:4900

----[5.3.0.201502161708]----H5+上传API

分类:HTML5+

API文档
0:number,初始状态,在创建之后触发此状态事件,上传任务处于可调度状态
1:number,上传任务开始处理,开始建立网络连接
2:number,上传任务请求已经接收,网络连接已建立
3:number,上传任务请求处理中,上传过程中不断触发
4:number,上传任务已完成(成功或失败)
5:number,上传任务暂停状态,可重新开始
-1:number,非任务状态,用于enumerate()和claer()操作所有上传任务

ios:
不断触发的是1. State: 1 , Status: -1
然后就没有然后了,一直触发.

安卓:
不断触发的是3.
但是安卓里3的状态完毕后一直触发的是2的状态,不停,也不出现4的状态
----用了官方的PHP上传地址是可以的.用我自己的上传地址会出现2.

2015-02-26 17:22 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

我修改HelloH5的uploader.html页面测试验证过(日志中有“State: 4 , Status: 200 at plus/uploader.html:46”),没有发现问题:

<!DOCTYPE HTML>  
<html>  
    <head>  
        <meta charset="utf-8"/>  
        <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>  
        <meta name="HandheldFriendly" content="true"/>  
        <meta name="MobileOptimized" content="320"/>  
        <title>Hello H5+</title>  
        <script type="text/javascript" src="../js/common.js"></script>  
        <script type="text/javascript">  
var server="http://demo.dcloud.net.cn/helloh5/uploader/upload.php";  
var files=[];  
// 上传文件  
function upload(){  
    if(files.length<=0){  
        plus.nativeUI.alert("没有添加上传文件!");  
        return;  
    }  
    outSet("开始上传:")  
    var wt=plus.nativeUI.showWaiting();  
    var task=plus.uploader.createUpload(server,  
        {method:"POST"},  
        function(t,status){ //上传完成  
            if(status==200){  
                console.log("State: "+t.state);  
                outLine("上传成功:"+t.responseText);  
                plus.storage.setItem("uploader",t.responseText);  
                var w=plus.webview.create("uploader_ret.html","uploader_ret.html",{scrollIndicator:'none',scalable:false});  
                w.addEventListener("loaded",function(){  
                    wt.close();  
                    w.show("slide-in-right",300);  
                },false);  
            }else{  
                outLine("上传失败:"+status);  
                wt.close();  
            }  
        }  
    );  
    task.addData("client","HelloH5+");  
    task.addData("uid",getUid());  
    for(var i=0;i<files.length;i++){  
        var f=files[i];  
        task.addFile(f.path,{key:f.name});  
    }  
    task.addEventListener("statechanged",function(t,status){  
        console.log("State: "+t.state+" , Status: "+status);  
    },false);  
    task.start();  
}  
// 拍照添加文件  
function appendByCamera(){  
    plus.camera.getCamera().captureImage(function(p){  
        appendFile(p);  
    });   
}  
// 从相册添加文件  
function appendByGallery(){  
    plus.gallery.pick(function(p){  
        appendFile(p);  
    });  
}  
// 添加文件  
var index=1;  
function appendFile(p){  
    var fe=document.getElementById("files");  
    var li=document.createElement("li");  
    var n=p.substr(p.lastIndexOf('/')+1);  
    li.innerText=n;  
    fe.appendChild(li);  
    files.push({name:"uploadkey"+index,path:p});  
    index++;  
    empty.style.display="none";  
}  
// 产生一个随机数  
function getUid(){  
    return Math.floor(Math.random()*100000000+10000000).toString();  
}  
        </script>  
        <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/>  
    </head>  
    <body>  
        <header>  
            <div class="nvbt iback" onclick="back(true);"></div>  
            <div class="nvtt">Uploader</div>  
            <div class="nvbt idoc" onclick="openDoc('Uploader Document','/doc/uploader.html')"></div>  
        </header>  
        <div id="dcontent" class="dcontent">  
            <br/>  
            <p class="heading">上传文件列表:</p>  
            <ul id="files" style="text-align:left;">  
                <p id="empty" style="font-size:12px;color:#C6C6C6;">无上传文件</p>  
            </ul>  
            <table style="width:100%;">  
                <tbody>  
                    <tr>  
                        <td style="width:40%"><div class="button button-select" onclick="appendByCamera()">拍照</div></td>  
                        <td style="width:40%"><div class="button button-select" onclick="appendByGallery()">相册选取</div></td>  
                    </tr>  
                </tbody>  
            </table>  
            <br/>  
            <div class="button" onclick="upload()">上 传</div>  
            <br/>  
            <!--<ul class="dlist">  
                <li class="ditem" onclick="appendByCamera()">拍照添加文件</li>  
                <li class="ditem" onclick="appendByGallery()">相册添加文件</li>  
            </ul>-->  
        </div>  
        <div id="output">  
Uploader用于管理文件的上传,用于从本地上传各种文件到网络服务器,支持跨域访问操作。  
        </div>  
    </body>  
</html>
大漠

大漠 (作者)

----[5.4.1.201503192218]----
这一版 IOS 和安卓都没有问题了

飞龙在天应中网

飞龙在天应中网

这个程序,怎么写自己的php后台? 这个程序是把图片传到dcloud上了。我怎么写一个后台?

  • GETONE

    POST表单提交……

    2015-08-06 01:10

大漠

大漠 (作者)

php接收文件就可以了.输出$_FILES就可以看到

该问题目前已经被锁定, 无法添加新回复