代码拉取完成,页面将自动刷新
#include "responsedirectory.h"
#include "mime.h"
#include <QDir>
#include <QFileInfoList>
#include <QTextStream>
#include <QByteArray>
#include <QBuffer>
//Display the first page showing the files
ResponseDirectory::ResponseDirectory(QTcpSocket* socket, QMap<QString, QString>& header, QString dir_name, QString url_path):
Response(socket, 200, header),
m_dir_name(dir_name),
m_url_path(url_path)
{
}
void ResponseDirectory::response()
{
QDir dir(m_dir_name);
if (!dir.isReadable())
return; //TODO error
QByteArray buffer;
QBuffer qbuffer(&buffer);
qbuffer.open(QIODevice::WriteOnly);
QTextStream sbuffer(&qbuffer);
sbuffer << "<html><head><title>"
<< m_url_path
<< "</title></head><body><h1>"
<< m_url_path
<< "</h1><hr/><table><tr>"
"<td>Filename</td>"
"<td>Size</td>"
"</tr>";
dir.setFilter(QDir::Dirs|QDir::Files);
dir.setSorting(QDir::DirsFirst|QDir::Name);
QFileInfoList file_list = dir.entryInfoList();
for (QFileInfoList::Iterator i = file_list.begin(); i != file_list.end(); ++i)
{
if (i->isDir())
{
sbuffer << QString("<tr><td><a hred='%1'>%2/</a></td><td>-</td></tr>")
.arg(m_url_path + i->fileName())
.arg(i->fileName());
}
else
{
sbuffer << QString("<tr><td><a href='%1'>%2</a></td><td>%3</td></tr>")
.arg(m_url_path + i->fileName())
.arg(i->fileName())
.arg(i->size());
}
}
sbuffer << "</table><hr/>"
<< APPLICATION_IDENTIFIER
<< "</body></html>";
sbuffer.flush();
m_header["Content-Type"] = Mime::instance().getMimeType("html");
m_header["content-Length"] = QString("%1").arg(buffer.length());
responseHeader();
m_socket->write(buffer);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。