/*! \~english Sends the file \a filePath as HTTP response. \~japanese HTTPレスポンスとして、ファイル \a filePath の内容を送信する */ bool TActionController::sendFile(const QString &filePath, const QByteArray &contentType, const QString &name, bool autoRemove) { if (rendered) { tWarn("Has rendered already: %s", qPrintable(className() + '#' + activeAction())); return false; } rendered = true; setStatusCode(200); if (!name.isEmpty()) { QByteArray filename; filename += "attachment; filename=\""; filename += name.toUtf8(); filename += '"'; response.header().setRawHeader("Content-Disposition", filename); } response.setBodyFile(filePath); response.header().setContentType(contentType); if (autoRemove) setAutoRemove(filePath); return true; }
bool SaveFile::open(OpenMode flags) { QFile ofi(m_finalFileName); // Check whether the existing file is writable if (ofi.exists() && !ofi.open(QIODevice::ReadWrite)) { setErrorString(ofi.errorString()); return false; } setAutoRemove(false); setFileTemplate(m_finalFileName); if (!QTemporaryFile::open(flags)) return false; m_finalized = false; // needs clean up in the end if (ofi.exists()) { setPermissions(ofi.permissions()); // Ignore errors } else { Permissions permAll = QFile::ReadOwner | QFile::ReadGroup | QFile::ReadOther | QFile::WriteOwner | QFile::WriteGroup | QFile::WriteOther; // set permissions with respect to the current umask setPermissions(permAll & ~m_umask); } return true; }
TempDir::TempDir(const QString &directoryPrefix, int mode) : KTempDir(directoryPrefix, mode) { setAutoRemove(true); }