Fișierul FTP trimite în mod incorect

am aflat eticheta imprimanta A4 + si le folosim pentru a imprima o cantitate imensa de etichete pentru depozitul nostru, fiindca dorim sa imprimam etichete care fiecare dintre ele este diferita de alta decidem sa facem un fisier DBF pentru fiecare lucrare de imprimare, deci de fiecare data fișierul DBF conține un număr de înregistrări diferite, apoi serviciul nostru web face o cerere de ftp pentru A4 + și ftp fișierul DBF la imprimantă, atunci comanda de imprimare trimite la imprimantă și fișierul DBF se va imprima. de cele mai multe ori toate etapele se întâmplă cu succes, dar uneori fișierul DBF de pe imprimantă este puțin diferent de fișierul dbf a fost făcut pe serviciul web și diffrence se află pe antetul fișierului, această diferențiere provoacă problema astfel încât imprimanta tipărește etichetele, dar nu până la sfârșitul fișierului DBF, de exemplu dacă fișierul DBF conține 500 de înregistrări, imprimanta tipărește doar 300 de înregistrări sau numere diferite și apoi continuă să imprime, dar eticheta nu conține date, înseamnă că după 300 imprimanta dont citiți fișierul dbf și eticheta este destul de bruta, dar pentru ca comanda de imprimare să fie 500 (fișierul DBF conține de asemenea 500 de înregistrări), el continuă să alimenteze eticheta până la 500.

comparăm ambele fișiere DBF pe serverul care găzduiește serviciul web (aici creăm fișierul dbf) și fișierul pe care se află ftp-ul pe imprimantă, ele sunt aceleași, doar un pic pe antetul fișierului este diferit și face această problemă.

i include codul vom face fișier DBF și, de asemenea, codul pe care îl folosim pentru a ftp acest fișier la imprimantă și, de asemenea, am atașa atât fișierul DBF pentru un eșantion.

echipa noastră lucrează la proiect și studiem ajutorul pe site-ul dvs., dar în acest moment putem vedea că totul este în regulă și am putea depana acest caz, poate că ne puteți ajuta să rezolvăm acest lucru.

------------------------ Crearea fișierului DBF ----------------------- -------------------------------

   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;
   }

------------------------ Fișier DBF FTP la imprimantă --------------------- ----------------------

   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;
   }

Deci, mulțumesc în mod inadecvat

0

1 răspunsuri

Nu știu de ce ați folosit Encoding.Default.GetBytes pentru a citi octeții.În loc de care utilizați metoda FileStream Read pentru a citi octeții. Sper că acest lucru vă ajută.

0
adăugat
Deci, mulțumesc, fluxul de fișiere funcționează bine
adăugat autor ali, sursa