Titanium HTTPCLIENT无法上传文件

时间:2013-11-29 22:23:27

标签: javascript android titanium httpclient

我尝试使用Brower可以上传文件,但如果我使用Titanium上传,则无法正常工作, 更广泛的代码是 浏览器上传文件:

<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

Upload.php文件:

$tmp_file=$_FILES['file']['tmp_name'];
$target_file=basename($_FILES['file']['name']);
move_uploaded_file($tmp_file, "files/".$target_file);
我的钛代码是:

var webaddress = 'http://' + address.value + ':' + port1.value + '/scanbatch/index.php';
xhr.open('POST',webaddress);
xhr.send({files : Titanium.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory,'scanbatch.txt')});

它可以工作,但网络服务没有收到任何东西,只是收到一个标题。

顺便说一句,我可以通过httpclient发送短xml,但是如果xml有时会发送掉更长的时间,更多的失败,我的意思并不总是,如果xml长于512KB,它总是失败。

我的代码是

var webaddress = 'http://' + address.value + ':' + port1.value + '/liveho/scanbatch';   
xhr.open('POST',webaddress);
xhr.send(xmlscript);

我的onload功能是

onload : function(e) {  
            alert(this.responseText);   
        },

请帮助我谢谢

1 个答案:

答案 0 :(得分:0)

我会给你一些建议,以缩小问题(钛方面)。

您是否测试过该文件的路径是否正确?

var file = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory + 
    Ti.Filesystem.getSeparator() + 'scanbatch.txt');

if(file.size)
    xhr.send({files : file});
else
    Ti.API.info("File " + file.nativePath + " doesn't exist or is empty");

如果它不是正确的路径,请尝试在resourcesDirectory中找到它:

var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory + 
    Ti.Filesystem.getSeparator() + 'scanbatch.txt');

设置超时属性可能会减少断开连接的问题。 onerror功能也可以帮助您找到问题。 onsendstream媒体资源可让您了解上传的进展情况。

Ti.Network.createHTTPClient({
...
    onload : function(e) {  
        alert(this.responseText);   
    },
    onerror : function(e) {  
        Ti.API.debug(e.error);
        alert(e.error);  
    },
    onsendstream : function(e) {  
        var progress = parseFloat(e.progress)*100;
        Ti.API.info("Upload progress:" + progress + "%");
        //e.progress will contain a value from 0.0-1.0 with the progress of the upload
        alert("Upload progress:" + progress + "%"); 
    },
    timeout : 5000  // in milliseconds
...
});