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