diff --git a/src/data_transfer.cpp b/src/data_transfer.cpp
index 38eb00ca92f8edf1b2e0a855d138ed7349b9afc4..3a1f70ccc7a5baaba5d2344daf2dd78150009967 100644
--- a/src/data_transfer.cpp
+++ b/src/data_transfer.cpp
@@ -204,7 +204,7 @@ FileTransfer::read(std::vector<uint8_t>& buf) const
 class IncomingFileTransfer final : public DataTransfer
 {
 public:
-    IncomingFileTransfer(DRing::DataTransferId id, const std::string&, std::size_t);
+    IncomingFileTransfer(DRing::DataTransferId id, const std::string&, std::size_t, std::size_t);
 
     bool start() override;
 
@@ -222,14 +222,16 @@ private:
 
 IncomingFileTransfer::IncomingFileTransfer(DRing::DataTransferId id,
                                            const std::string& display_name,
+                                           std::size_t total_size,
                                            std::size_t offset)
     : DataTransfer(id)
 {
-    RING_WARN() << "[FTP] incoming transfert: " << display_name;
+    RING_WARN() << "[FTP] incoming transfert of " << total_size << " byte(s): " << display_name;
     (void)offset;
 
     info_.isOutgoing = false;
     info_.displayName = display_name;
+    info_.totalSize = total_size;
     // TODO: use offset?
 
     emit(DRing::DataTransferEventCode::created);
@@ -291,6 +293,7 @@ public:
     std::shared_ptr<DataTransfer> createFileTransfer(const std::string& file_path,
                                                      const std::string& display_name);
     std::shared_ptr<IncomingFileTransfer> createIncomingFileTransfer(const std::string& display_name,
+                                                                     std::size_t total_size,
                                                                      std::size_t offset);
 
     std::shared_ptr<DataTransfer> getTransfer(const DRing::DataTransferId& id);
@@ -329,10 +332,11 @@ DataTransferFacade::Impl::createFileTransfer(const std::string& file_path,
 
 std::shared_ptr<IncomingFileTransfer>
 DataTransferFacade::Impl::createIncomingFileTransfer(const std::string& display_name,
+                                                     std::size_t total_size,
                                                      std::size_t offset)
 {
     auto id = generateUID();
-    auto transfer = std::make_shared<IncomingFileTransfer>(id, display_name, offset);
+    auto transfer = std::make_shared<IncomingFileTransfer>(id, display_name, total_size, offset);
     std::lock_guard<std::mutex> lk {mapMutex_};
     map_.emplace(id, transfer);
     return transfer;
@@ -437,9 +441,9 @@ DataTransferFacade::info(const DRing::DataTransferId& id) const
 }
 
 std::string
-DataTransferFacade::onIncomingFileRequest(const std::string& display_name, std::size_t offset)
+DataTransferFacade::onIncomingFileRequest(const std::string& display_name, std::size_t total_size, std::size_t offset)
 {
-    auto transfer = pimpl_->createIncomingFileTransfer(display_name, offset);
+    auto transfer = pimpl_->createIncomingFileTransfer(display_name, total_size, offset);
     auto filename = transfer->requestFilename();
     if (!filename.empty())
         transfer->start(); // TODO: bad place, call only if file can be open
diff --git a/src/data_transfer.h b/src/data_transfer.h
index 56cf0ef018585290c2430a7332e06df0ca36307f..5c5f40213a7addf906f3c293f7a038ba1bbf633c 100644
--- a/src/data_transfer.h
+++ b/src/data_transfer.h
@@ -70,7 +70,7 @@ public:
     /// Create an IncomingFileTransfer object.
     /// \return a filename to open where incoming data will be written or an empty string
     ///         in case of refusal.
-    std::string onIncomingFileRequest(const std::string& display_name, std::size_t offset);
+    std::string onIncomingFileRequest(const std::string& display_name, std::size_t total_size, std::size_t offset);
 
 private:
     class Impl;
diff --git a/src/ftp_server.cpp b/src/ftp_server.cpp
index 7f7fd3da07f015352f4ee494d3788dfb81840f1b..78171640b1684420ab35f05508d903041bc359f8 100644
--- a/src/ftp_server.cpp
+++ b/src/ftp_server.cpp
@@ -56,7 +56,7 @@ bool
 FtpServer::startNewFile()
 {
     // Request filename from client (WARNING: synchrone call!)
-    auto filename = Manager::instance().dataTransfers->onIncomingFileRequest(displayName_, 0 /* TODO: offset */);
+    auto filename = Manager::instance().dataTransfers->onIncomingFileRequest(displayName_, fileSize_, 0 /* TODO: offset */);
     if (filename.empty())
         return false;