एफ़टीपी फाइल गलत तरीके से भेजती है

हमारे पास पहले लेबल प्रिंटर ए 4 + है और हम उन्हें अपने गोदाम के लिए बड़ी मात्रा में लेबल प्रिंट करने के लिए उपयोग करते हैं, क्योंकि हम उन लेबलों को मुद्रित करना चाहते हैं, जिनमें से प्रत्येक एक दूसरे से अलग है, हम प्रत्येक प्रिंट नौकरी के लिए डीबीएफ फ़ाइल बनाने का निर्णय लेते हैं, इसलिए हर बार डीबीएफ फ़ाइल में भिन्न रिकॉर्ड की संख्या होती है, फिर हमारी वेब सेवा ए 4 + प्रिंटर को एक एफटीपी अनुरोध बनाती है और प्रिंटर पर डीबीएफ फ़ाइल को FTP करती है, फिर प्रिंट कमांड प्रिंटर को भेजता है और डीबीएफ फ़ाइल प्रिंट हो जाएगी। अधिकांश समय सभी कदम सफलतापूर्वक होते हैं लेकिन कभी-कभी प्रिंटर पर डीबीएफ फ़ाइल वेब सेवा पर डीबीएफ फ़ाइल से भिन्न होती है और फ़ाइल के शीर्षलेख पर भिन्नता होती है, यह अंतर समस्या का कारण बनता है ताकि प्रिंटर लेबल प्रिंट करता है लेकिन डीबीएफ फ़ाइल के अंत तक नहीं, उदाहरण के लिए यदि डीबीएफ फ़ाइल में 500 रिकॉर्ड होते हैं, तो प्रिंटर प्रिंट केवल 300 रिकॉर्ड या भिन्न संख्या प्रिंट करता है और फिर यह प्रिंट करना जारी रखता है लेकिन लेबल में कोई डेटा नहीं होता है, इसका मतलब है 300 प्रिंटर के बाद डीबीएफ फ़ाइल पढ़ें और लेबल काफी कच्चा है, लेकिन प्रिंट कमांड 500 है (डीबीएफ फाइल में 500 रिकॉर्ड भी हैं) यह 500 तक लेबल को खिलाना जारी रखता है।

हम सर्वर पर दोनों डीबीएफ फ़ाइल की तुलना करते हैं जो वेब सेवा होस्ट करता है (यह वह जगह है जहां हम डीबीएफ फ़ाइल बनाते हैं) और प्रिंटर पर ftp फ़ाइल, वे समान हैं, फ़ाइल के शीर्षलेख पर थोड़ा सा अंतर है और यह बनाता है यह समस्या।

मैं उस कोड को शामिल करता हूं जिसे हम डीबीएफ फ़ाइल बनाते हैं और यह कोड जिसे हम प्रिंटर पर इस फ़ाइल को ftp करने के लिए उपयोग करते हैं और मैं नमूना के लिए दोनों डीबीएफ फ़ाइल संलग्न करता हूं।

हमारी टीम परियोजना पर काम करती है और हम आपकी वेबसाइट पर मदद करते हैं, लेकिन इस बिंदु पर हम देख सकते हैं कि सब कुछ ठीक है और हम इस मामले को डीबग नहीं कर सकते हैं, शायद आप इसे हल करने में हमारी मदद कर सकते हैं।

------------------------ डीबीएफ फ़ाइल बनाएं ----------------------- -------------------------------

   private bool EportDBF(string filePath, List list)
   {
       string tableName = string.Empty;
       string folderPath = string.Empty;

       GetFileNameAndPath(filePath, ref tableName, ref folderPath);

       string connString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + folderPath + "; Extended Properties=DBASE IV;";
       string createStatement = "Create Table " + tableName + " ( ";
       string insertStatement = "Insert Into " + tableName + " Values ( ";
       string insertTemp = string.Empty;

       OleDbConnection conn = new OleDbConnection(connString);

       try
       {

           createStatement += "[RW] varchar(4), ";
           createStatement += "[CODE] varchar(16), ";
           createStatement += "[DESC] varchar(16), ";
           createStatement += "[WEIGHT] varchar(16), ";
           createStatement += "[DATE] varchar(32), ";
           createStatement += "[RCODE] varchar(16), ";
           createStatement += "[BCODE] varchar(16) )";

           conn.Open();

           DataSet dsFill = new DataSet();

           OleDbDataAdapter daInsertTable = new OleDbDataAdapter(createStatement, conn);

           daInsertTable.Fill(dsFill);

           int row = 1001;

           foreach (var item in list)
           {
               insertTemp = insertStatement;

               insertTemp += "'" + row++ + "' , ";
               insertTemp += "'" + item.ItemCode + "' , ";
               insertTemp += "'0' , ";
               insertTemp += "'" + item.Weight + "' , ";
               insertTemp += "'" + item.DateTime + "' , ";
               insertTemp += "'" + item.ReferenceCode + "' , ";
               insertTemp += "'" + item.Barcode.ToString() + "' ) ;";

               daInsertTable = new OleDbDataAdapter(insertTemp, conn);

               daInsertTable.Fill(dsFill);
           }

           conn.Close();
           conn.Dispose();
       }
       catch (Exception ex)
       {
           conn.Close();
           conn.Dispose();

           return false;
       }

       return true;
   }

------------------------ प्रिंटर को एफ़टीपी डीबीएफ फाइल --------------------- ----------------------

   private bool UpLoadDBF(List barcodeDatas, string path)
   {
       try
       {
           EportDBF(path, barcodeDatas);

           FtpWebRequest request;
           FtpWebResponse response;

           Stream sourceStream = new MemoryStream();
           Stream requestStream = sourceStream;
           StreamReader reader = new StreamReader(path);

           try
           {
               request = (FtpWebRequest)WebRequest.Create("ftp://" + printerIP + "/card/barcodes.dbf");
               request.Method = WebRequestMethods.Ftp.UploadFile;
               request.KeepAlive = false;
               request.Credentials = new NetworkCredential(user, password);

               byte[] byteArray = Encoding.Default.GetBytes(reader.ReadToEnd());
               sourceStream = new MemoryStream(byteArray);

               try
               {
                   requestStream = request.GetRequestStream();
               }
               finally 
               {
                   request.ContentLength = sourceStream.Length;

                   byte[] buffer = new byte[sourceStream.Length];
                   int count = 2048;
                   if (sourceStream.Length < count)
                       count = (int) sourceStream.Length;

                   int bytesRead = sourceStream.Read(buffer, 0, count);

                   do
                   {
                       requestStream.Write(buffer, 0, bytesRead);
                       bytesRead = sourceStream.Read(buffer, 0, count);

                   } while (bytesRead > 0);

                   sourceStream.Close();
                   requestStream.Close();
               }
           }
           catch (Exception ex)
           {
           }
           finally
           {
               request = null;

               sourceStream.Close();
               sourceStream.Dispose();

               reader.Close();
               reader.Dispose();

               requestStream.Close();
               requestStream.Dispose();
           }
       }
       catch (Exception ex)
       {
           return false;
       }

       return true;
   }

तो धन्यवाद धन्यवाद

0
जोड़ा संपादित
विचारों: 1

1 उत्तर

मुझे नहीं पता कि आपने बाइट्स को पढ़ने के लिए एन्कोडिंग.डिफॉल्ट.गेटबाइट्स का उपयोग क्यों किया है। इसके बजाय बाइट्स को पढ़ने के लिए फ़ाइलस्ट्रीम की रीड विधि का उपयोग करें। उम्मीद है की यह मदद करेगा।

0
जोड़ा
तो धन्यवाद, फ़ाइल स्ट्रीम ठीक काम करता है
जोड़ा लेखक ali, स्रोत