mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-05 03:14:44 +00:00
Fix torrent loading problem from Web UI on Windows.
This commit is contained in:
parent
9cff66df3f
commit
76ca967d70
@ -86,9 +86,8 @@ void DownloadThread::processDlFinished(QNetworkReply* reply) {
|
||||
// TODO: Support GZIP compression
|
||||
tmpfile->write(reply->readAll());
|
||||
tmpfile->close();
|
||||
// XXX: For some reason, tmpfile has to be destroyed before
|
||||
// the signal is sent or the file stays locked on Windows
|
||||
// for some reason.
|
||||
// XXX: tmpfile needs to be deleted on Windows before using the file
|
||||
// or it will complain that the file is used by another process.
|
||||
delete tmpfile;
|
||||
// Send finished signal
|
||||
emit downloadFinished(url, filePath);
|
||||
|
@ -989,9 +989,10 @@ QTorrentHandle QBtSession::addTorrent(QString path, bool fromScanDir, QString fr
|
||||
t = new torrent_info(path.toUtf8().constData());
|
||||
if(!t->is_valid())
|
||||
throw std::exception();
|
||||
} catch(std::exception&) {
|
||||
} catch(std::exception& e) {
|
||||
if(!from_url.isNull()) {
|
||||
addConsoleMessage(tr("Unable to decode torrent file: '%1'", "e.g: Unable to decode torrent file: '/home/y/xxx.torrent'").arg(from_url), QString::fromUtf8("red"));
|
||||
addConsoleMessage(QString::fromLocal8Bit(e.what()), "red");
|
||||
//emit invalidTorrent(from_url);
|
||||
misc::safeRemove(path);
|
||||
}else{
|
||||
|
@ -430,16 +430,18 @@ void HttpConnection::respondCommand(const QString& command) {
|
||||
if(command == "upload") {
|
||||
qDebug() << Q_FUNC_INFO << "upload";
|
||||
// Get a unique filename
|
||||
// XXX: We need to use a QTemporaryFile pointer here
|
||||
// and it fails on Windows.
|
||||
// The file also needs to end with .torrent otherwise
|
||||
// it fails to load on Windows.
|
||||
QTemporaryFile *tmpfile = new QTemporaryFile (QDir::temp().absoluteFilePath("qBT-XXXXXX.torrent"));
|
||||
tmpfile->setAutoRemove(false);
|
||||
if (tmpfile->open()) {
|
||||
QString filePath = tmpfile->fileName();
|
||||
tmpfile->write(m_parser.torrent());
|
||||
tmpfile->close();
|
||||
emit torrentReadyToBeDownloaded(tmpfile->fileName(), false, QString(), false);
|
||||
tmpfile->deleteLater();
|
||||
// XXX: tmpfile needs to be deleted on Windows before using the file
|
||||
// or it will complain that the file is used by another process.
|
||||
delete tmpfile;
|
||||
emit torrentReadyToBeDownloaded(filePath, false, QString(), false);
|
||||
// Clean up
|
||||
QFile::remove(filePath);
|
||||
} else {
|
||||
std::cerr << "I/O Error: Could not create temporary file" << std::endl;
|
||||
delete tmpfile;
|
||||
|
Loading…
x
Reference in New Issue
Block a user