首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FTP FTP上传

FTP FTP上传
EN

Stack Overflow用户
提问于 2014-05-31 22:41:48
回答 1查看 586关注 0票数 0
代码语言:javascript
运行
复制
var ftpConfig = {
host:'www.test.com',
port:21,
user:'uname',
password:'upwd'
};

var win = Titanium.UI.createWindow({backgroundColor:'white'});

var connectButton = Titanium.UI.createButton({
title:'Connect',
top: 155,
left:30,
right:30,
height:40
});
win.add(connectButton);
var upB = Titanium.UI.createButton({
title:'upload',
top: 195,
left:30,
right:30,
height:40
});
win.add(upB);
upB.addEventListener('click', upload);
var controlSocket = Ti.Network.createTCPSocket({
hostName:ftpConfig.host,
port:ftpConfig.port,
stripTerminator:true,
mode:Titanium.Network.READ_WRITE_MODE
});

controlSocket.addEventListener('read', function(e) {
Titanium.API.info('[SERVER] ' + e.data);
Ti.API.info(JSON.stringify(e.data));
responseCode = e.data.toString().substr(0,3);

switch (responseCode) {
    case '220': // server ready
        Titanium.API.info('[CLIENT] Logging in');
        controlSocket.write('USER ' + ftpConfig.user + '\n\r', e.from);     
        connectButton.title = 'Disconnect';
        break;

    case '221': // goodbye
        controlSocket.close();
        Titanium.API.info('Disconnected from ' + controlSocket.hostName);
        connectButton.title = 'Connect';
        break;

    case '230': // user logged in
        Titanium.API.info('[CLIENT] Successfully logged in');
        break;

    case '331': // password required
        Titanium.API.info('[CLIENT] Sending password');
        controlSocket.write('PASS ' + ftpConfig.password + '\n\r', e.from);
        break;

    case '530': // login incorrect
        controlSocket.close();
        Titanium.API.info('Login failed, disconnected from ' +        controlSocket.hostName);
        connectButton.title = 'Connect';
        break;

    default: 
        Titanium.API.info('Unhandled response: ' + responseCode);
        break;
}
});

controlSocket.addEventListener('readError', function(e) {
Titanium.API.info('Socket read error: ' + e.error);
});

controlSocket.addEventListener('writeError', function(e) {
Titanium.API.info('Socket write error: ' + e.error);
});


connectButton.addEventListener('click', function(){
if (connectButton.title == 'Connect') {
    try {
        Titanium.API.info('[CLIENT] Connecting to ' + controlSocket.hostName);
        controlSocket.connect();
    } catch (e) {
        Titanium.API.info('Error: ' + e.error);
    }                   
} else {
    if (controlSocket.isValid) {
        Titanium.API.info('[CLIENT] Quitting');
        controlSocket.write('QUIT\r\n');
    }
}   
});

function upload()
{
var fx = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory,'home_en.png');


controlSocket.write('STOR '+fx.name+'\r\n');
    controlSocket.write("PWD\n");

}

您好!

我有一些关于“插座”和钛的问题。我正试图在我的服务器上上传一个文件,但是当文件被上传时,我在服务器上只得到一个空文件0octet。我在stackoverflow上读了很多关于这个的文章,但是我不能解决我的问题。

EN

回答 1

Stack Overflow用户

发布于 2014-06-01 16:23:15

仅当套接字正常关闭时,Ftp协议才会假定文件上传成功。要正常关闭套接字,在套接字关闭时不应该有任何挂起的读或写操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23971311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档