<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[Library] QFtpCompat – async FTP client for Qt6]]></title><description><![CDATA[<p dir="auto">Hi all,</p>
<p dir="auto">while migrating a Qt5 project to Qt6 I ran into the problem – <code>QFtp</code> is gone and <code>QNetworkAccessManager</code> apparently doesn't do FTP anymore. I needed to talk to an embedded PLC over FTP and couldn't find anything that was CMake-ready and covered the commands I needed, so I ended up writing my own.</p>
<p dir="auto">The API is queue-based and signal-driven like the old <code>QFtp</code>, but it's not a drop-in replacement – URLs are used instead of separate host/port parameters, and credentials are passed via <code>QUrl</code> rather than a dedicated login call.</p>
<pre><code class="language-cpp">auto *ftp = new QFtpCompat(this);

connect(ftp, &amp;QFtpCompat::commandFinished, this, [ftp](int, bool error) {
    if (error) qWarning() &lt;&lt; ftp-&gt;errorString();
});
connect(ftp, &amp;QFtpCompat::listInfo, this, [](const QFtpCompatDirEntry &amp;e) {
    qDebug() &lt;&lt; e.name() &lt;&lt; e.size();
});

ftp-&gt;open(QUrl("ftp://user:pass@192.168.1.1/"));
ftp-&gt;list(QUrl("ftp://192.168.1.1/data/"));

QByteArray buf;
ftp-&gt;get(QUrl("ftp://192.168.1.1/data/config.cfg"), &amp;buf);
ftp-&gt;put(QUrl("ftp://192.168.1.1/data/config.cfg"), buf);
</code></pre>
<p dir="auto">Explicit FTPS (AUTH TLS) and Implicit FTPS are supported as well:</p>
<pre><code class="language-cpp">ftp-&gt;open(QUrl("ftps://192.168.1.1/"), QFtpCompat::EncryptionMode::Explicit);
connect(ftp, &amp;QFtpCompat::sslErrors, ftp, &amp;QFtpCompat::ignoreSslErrors);
</code></pre>
<p dir="auto">Posting this as-is – it works for my use case and has a small integration test suite, but hasn't seen much use beyond that. Feedback and PRs welcome.</p>
<p dir="auto"><a href="https://github.com/DeiVadder/QFtpCompat" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/DeiVadder/QFtpCompat</a></p>
]]></description><link>https://forum.qt.io/topic/164711/library-qftpcompat-async-ftp-client-for-qt6</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 10:45:14 GMT</lastBuildDate><atom:link href="https://forum.qt.io/topic/164711.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 May 2026 11:12:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Library] QFtpCompat – async FTP client for Qt6 on Thu, 28 May 2026 05:23:02 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jonb">@<bdi>JonB</bdi></a></p>
<p dir="auto">Like I said, this is currently just the bare minimum viable project for my port 😄</p>
<p dir="auto">Feel free to contribute if you'd like ^^<br />
Otherwise, development will probably continue once I have a bit more free time again.</p>
<p dir="auto">Any help, feedback, or pull requests are always appreciated!</p>
]]></description><link>https://forum.qt.io/post/838409</link><guid isPermaLink="true">https://forum.qt.io/post/838409</guid><dc:creator><![CDATA[J.Hilk]]></dc:creator><pubDate>Thu, 28 May 2026 05:23:02 GMT</pubDate></item><item><title><![CDATA[Reply to [Library] QFtpCompat – async FTP client for Qt6 on Wed, 27 May 2026 11:52:55 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/j.hilk">@<bdi>J.Hilk</bdi></a><br />
Hi there.  Excellent stuff for the community, thank you.</p>
<p dir="auto">I had a brief look through <a href="https://github.com/DeiVadder/QFtpCompat" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/DeiVadder/QFtpCompat</a> text, and some of the code.</p>
<p dir="auto">If I were to use FTP again --- as I did years ago --- I would "miss" these features:</p>
<ul>
<li><code>NLST</code> command.  Clients may map this to a <code>DIR</code> command rather than <code>LIST</code>, IIRC.</li>
<li>ASCII mode states "Command sent; CRLF normalisation not yet applied".  If that means it does not do LF&lt;-&gt;CR-LF translation.</li>
<li>Active rather than just Passive mode.</li>
</ul>
<p dir="auto">Just noting these.  Quite understand if you want to stop at what you have now. :)</p>
]]></description><link>https://forum.qt.io/post/838396</link><guid isPermaLink="true">https://forum.qt.io/post/838396</guid><dc:creator><![CDATA[JonB]]></dc:creator><pubDate>Wed, 27 May 2026 11:52:55 GMT</pubDate></item></channel></rss>