我尝试使用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);
},
请帮助我谢谢
答案 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
...
});