diff --git a/vncviewer/FTMsgReader.cxx b/vncviewer/FTMsgReader.cxx
index e3652d0..7f0c330 100644
--- a/vncviewer/FTMsgReader.cxx
+++ b/vncviewer/FTMsgReader.cxx
@@ -63,24 +63,27 @@
   return numFiles;
 }
 
-int 
-FTMsgReader::readFileDownloadData(void *pFile, unsigned int *pModTime)
+void * 
+FTMsgReader::readFileDownloadData(unsigned int *pSize, unsigned int *pModTime)
 {
   unsigned char compressLevel = m_pInStream->readU8();
   int realSize = m_pInStream->readU16();
   int compressedSize = m_pInStream->readU16();
 
   if ((realSize == 0) && (compressedSize == 0)) {
+    *pSize = 0;
     *pModTime = m_pInStream->readU32();
-    return 0;
+    return NULL;
   } else {
-    pFile = malloc(compressedSize);
+    char *pFile = new char [compressedSize];
     if (pFile == NULL) {
       m_pInStream->skip(compressedSize);
-      return -1;
+      *pModTime = 0;
+      return NULL;
     } else {
       m_pInStream->readBytes(pFile, compressedSize);
-      return compressedSize;
+      *pSize = compressedSize;
+      return pFile;
     }
   }
 }
diff --git a/vncviewer/FTMsgReader.h b/vncviewer/FTMsgReader.h
index 549dc0c..ed51d51 100644
--- a/vncviewer/FTMsgReader.h
+++ b/vncviewer/FTMsgReader.h
@@ -38,11 +38,11 @@
       ~FTMsgReader();
 
       int readFileListData(FileInfo *pFileInfo);
-      int readFileDownloadData(void *pFile, unsigned int *pModTime);
       int readFileUploadCancel(void *pReason);
       int readFileDownloadFailed(void *pReason);
       int readFileDirSizeData(DWORD64 *pdw64DirSize);
       int readFileLastRqstFailed(int *pTypeOfRequest, void *pReason);
+      void *readFileDownloadData(unsigned int *pSize, unsigned int *pModTime);
       
     private:
       rdr::InStream *m_pInStream;
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index 9319519..f607bbb 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -244,7 +244,6 @@
             char *pRemPath = m_TransferQueue.getFullRemPathAt(0);
             m_queueFileListRqst.add(pRemPath, 0, 0, FT_FLR_DEST_DOWNLOAD);
             m_pWriter->writeFileListRqst(strlen(pRemPath), pRemPath, 0);
-            m_TransferQueue.deleteAt(0);
             return;
           }
         }
@@ -270,6 +269,13 @@
 bool
 FileTransfer::downloadFile()
 {
+  if (m_TransferQueue.getFlagsAt(0) & FT_ATTR_FILE) {
+    if (m_fileWriter.create(m_TransferQueue.getFullLocPathAt(0))) {
+      m_pWriter->writeFileDownloadRqst(strlen(m_TransferQueue.getFullRemPathAt(0)),
+                                       m_TransferQueue.getFullRemPathAt(0), 0);
+      return true;
+    } else return false;
+  }
   return false;
 }
 
@@ -345,6 +351,43 @@
 bool 
 FileTransfer::procFileDownloadDataMsg()
 {
+  unsigned int bufSize = 0;
+  unsigned int modTime = 0;
+
+  void *pFile = m_pReader->readFileDownloadData(&bufSize, &modTime);
+
+  if ((!m_fileWriter.isCreated()) || (!isTransferEnable())) {
+    if (pFile != NULL) delete pFile;
+    return false;
+  }
+
+  if (bufSize > 0) {
+    unsigned int bytesWritten = 0;
+    m_fileWriter.write(pFile, bufSize, &bytesWritten);
+    delete pFile;
+    if (bytesWritten != bufSize) {
+      char reason[] = "Error File Writting";
+      m_pWriter->writeFileDownloadCancel(strlen(reason), reason);
+      m_TransferQueue.deleteAt(0);
+      m_pFTDialog->postCheckTransferQueueMsg();
+      return false;
+    }
+    return true;
+  } else {
+    if (modTime != 0) {
+      m_fileWriter.setTime(modTime);
+      m_fileWriter.close();
+      m_TransferQueue.deleteAt(0);
+      m_pFTDialog->postCheckTransferQueueMsg();
+      return true;
+    } else {
+      m_fileWriter.close();
+      char reason[] = "Error File Writting";
+      m_pWriter->writeFileDownloadCancel(strlen(reason), reason);
+      m_TransferQueue.deleteAt(0);
+      m_pFTDialog->postCheckTransferQueueMsg();
+    }
+  }
   return false;
 }
 
@@ -430,8 +473,8 @@
   unsigned int flags = m_TransferQueue.getFlagsAt(0);
   
   if ((flags & FT_ATTR_DIR) && (flags & FT_ATTR_FLR_DOWNLOAD_ADD)) {
-    m_TransferQueue.add(m_TransferQueue.getLocPathAt(0), 
-                        m_TransferQueue.getRemPathAt(0), 
+    m_TransferQueue.add(m_TransferQueue.getFullLocPathAt(0), 
+                        m_TransferQueue.getFullRemPathAt(0), 
                         pFI, FT_ATTR_COPY_DOWNLOAD);
     m_TransferQueue.deleteAt(0);
     m_pFTDialog->postCheckTransferQueueMsg();
