网盘——返回上一级

本文主要讲解网盘里面关于文件操作部分的返回上一级,具体步骤如下

1、实施步骤:

A、客户端返回上一级功能的时候,我们首先检查是否是在根目录,如果在根目录则直接返回失败,反之则返回上一级。

B、假如是在某个子目录里面,客户端发送返回上一级请求(包含上一级目录信息,原因是获得上一级的文件信息)

C、服务器收到请求之后,将上一级目录中的文件名发送给客户端,这块就和刷新是一样的

D、客户端接收回复信息并显示

2、代码实现

2.1、添加返回上一级的函数

    //返回上一级
    void returnPre();

2.2、关联槽函数

 //关联返回上一级信号槽
    connect(m_pReturnPB,SIGNAL(clicked(bool)),
            this, SLOT(returnPre()));

2.3、添加槽函数定义

测试

void Book::returnPre()
{
    //判断当前目录是不是顶层目录
    QString strCurPath = TcpClient::getinstance().curPath();
    QString strRootPath = "./"+TcpClient::getinstance().loginName();
    if(strCurPath==strRootPath)
    {
        QMessageBox::warning(this, "返回上一级","返回失败,已经在最开始的文件夹目录中!");
    }
    else {

    }
}

2.4、定义一个当前路径函数

    //返回上一级定义当前路径
    void setCurPath(QString strCurPath);
void TcpClient::setCurPath(QString strCurPath)
{
    m_strCurPath = strCurPath;
}

2.5、添加返回上一级函数定义

void Book::returnPre()
{
    //判断当前目录是不是顶层目录
    QString strCurPath = TcpClient::getinstance().curPath();
    QString strRootPath = "./"+TcpClient::getinstance().loginName();
    if(strCurPath==strRootPath)
    {
        QMessageBox::warning(this, "返回上一级","返回失败,已经在最开始的文件夹目录中!");
    }
    else
    {
        //  "./aa/bb/cc"   -----> "./aa/bb"
        int index = strCurPath.lastIndexOf('/');
        strCurPath.remove(index,strCurPath.size()-index);
        qDebug()<<"return-->"<<strCurPath;
        //将新的路径保存到当前目录里面
        TcpClient::getinstance().setCurPath(strCurPath);

        clearEnterDir();//将进入的子文件夹给清除掉,因为上一层的话,要显示上一层的信息,使用刷新的功能就可以了

        flushDir();
    }
}
void Book::flushDir()
{
    
    QString strCurPath = TcpClient::getinstance().curPath();
    PDU *pdu =mkPDU(strCurPath.size()+1);
    pdu->uiMsgType=ENUM_MSG_TYPE_FLUSH_DIR_REQUEST;
    strncpy((char*)(pdu->caMsg),strCurPath.toStdString().c_str(),strCurPath.size());
    //发送给服务器
    TcpClient::getinstance().getTcpSocket().write((char*)pdu,pdu->uiPDULen);
    free(pdu);
    pdu=NULL;
}

3、测试

点击jack文件夹,里面的文件有三个,之后点击返回按钮,直接返回到jack部分。再点击一次返回,因为已经是根目录了,所以直接警告

成功!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值