FTP文件发送错误

FTP文件发送错误,ftp,Ftp,我们有一台新的A4+标签打印机,我们使用它们为我们的仓库打印大量标签,因为我们想要打印每个标签都不同于另一个的标签,所以我们决定为每个打印作业制作一个DBF文件,因此,每次DBF文件包含不同记录的数量时,我们的web服务都会向A4+打印机发出ftp请求,并将DBF文件ftp到打印机,然后打印命令发送到打印机,DBF文件将打印。大多数情况下,所有步骤都会成功执行,但有时打印机上的DBF文件与web服务上创建的DBF文件几乎没有差异,差异出现在文件头上,这会导致问题,因此打印机会打印标签,但不会打印

我们有一台新的A4+标签打印机,我们使用它们为我们的仓库打印大量标签,因为我们想要打印每个标签都不同于另一个的标签,所以我们决定为每个打印作业制作一个DBF文件,因此,每次DBF文件包含不同记录的数量时,我们的web服务都会向A4+打印机发出ftp请求,并将DBF文件ftp到打印机,然后打印命令发送到打印机,DBF文件将打印。大多数情况下,所有步骤都会成功执行,但有时打印机上的DBF文件与web服务上创建的DBF文件几乎没有差异,差异出现在文件头上,这会导致问题,因此打印机会打印标签,但不会打印到DBF文件的末尾,例如,如果DBF文件包含500条记录,则打印机仅打印300条记录或不同的编号,然后继续打印,但标签不包含任何数据,这意味着300后打印机不读取DBF文件,且标签非常原始,但因为打印命令为500(DBF文件也包含500条记录)它继续给标签喂料,直到500

我们比较了托管web服务的服务器上的DBF文件(这是我们创建DBF文件的地方)和打印机上ftp的文件,它们是相同的,只是文件头上有一点不一致,这就产生了这个问题

我包括我们制作DBF文件的代码,以及我们用来将该文件ftp到打印机的代码,还附上了两个DBF文件作为示例

我们的团队致力于这个项目,我们研究了您网站上的帮助,但在这一点上,我们可以看到一切正常,我们无法调试这个案例,也许您可以帮助我们解决这个问题

------------------------创建DBF文件------------------------------------------------------

   private bool EportDBF(string filePath, List<BarcodeData> 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<BarcodeData> 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;
   }
private bool-EportDBF(字符串文件路径,列表)
{
string tableName=string.Empty;
string folderPath=string.Empty;
GetFileName和Path(filePath、ref tableName、ref folderPath);
string connString=“Provider=Microsoft.Jet.OLEDB.4.0;数据源=“+folderPath+”;扩展属性=DBASE IV;”;
string createStatement=“创建表”+表名+”(”;
string insertStatement=“插入“+tableName+”值(”;
string insertTemp=string.Empty;
OLEDB连接conn=新的OLEDB连接(connString);
尝试
{
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();
数据集dsFill=新数据集();
OleDbDataAdapter dainsertable=新的OleDbDataAdapter(createStatement,conn);
daInsertTable.Fill(dsFill);
int行=1001;
foreach(列表中的变量项)
{
insertTemp=insertStatement;
insertTemp+=“'”+行+++“',”;
insertTemp+=“'”+item.ItemCode+“',”;
insertTemp+=“'0',”;
insertTemp+=“'”+项目重量+“,”;
insertTemp+=“'”+item.DateTime+“',”;
insertTemp+=“'”+item.ReferenceCode+”,“;
insertTemp++=“'”+item.Barcode.ToString()+”);”;
daInsertTable=新的OLEDB数据适配器(插入温度,连接);
daInsertTable.Fill(dsFill);
}
康涅狄格州关闭();
conn.Dispose();
}
捕获(例外情况除外)
{
康涅狄格州关闭();
conn.Dispose();
返回false;
}
返回true;
}
------------------------FTP DBF文件到打印机-------------------------------------------

   private bool EportDBF(string filePath, List<BarcodeData> 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<BarcodeData> 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;
   }
private bool UpLoadDBF(列出条形码数据,字符串路径)
{
尝试
{
EportDBF(路径,条形码数据);
FtpWebRequest请求;
FtpWebResponse响应;
Stream sourceStream=new MemoryStream();
Stream requestStream=sourceStream;
StreamReader=新的StreamReader(路径);
尝试
{
request=(FtpWebRequest)WebRequest.Create(“ftp://“+printerIP+”/card/barcodes.dbf”);
request.Method=WebRequestMethods.Ftp.UploadFile;
request.KeepAlive=false;
request.Credentials=新的网络凭据(用户、密码);
byte[]byteArray=Encoding.Default.GetBytes(reader.ReadToEnd());
sourceStream=新内存流(byteArray);
尝试
{
requestStream=request.GetRequestStream();
}
最后
{
request.ContentLength=sourceStream.Length;
byte[]buffer=新字节[sourceStream.Length];
整数计数=2048;
if(sourceStream.Length<计数)
count=(int)sourceStream.Length;
int bytesRead=sourceStream.Read(缓冲区,0,计数);
做
{
写入(缓冲区,0,字节读取);
bytesRead=sourceStream.Read(缓冲区,0,计数);
}而(字节读取>0);
sourceStream.Close();
requestStream.Close();
}
}
捕获(例外情况除外)
{
}
最后
{
请求=null;
sourceStream.Close();
Dispose();
reader.Close();
reader.Dispose();
requestStream.Close();
requestStream.Dispose();
}
}
ca