OzOfNash
asked on
Intermec Label printing via FTP using WebRequestMethods.Ftp.UploadFile
Using an Intermec 3400e label printer with an EasyLAN 10i2 Ethernet adapter, labels can be successfully printed using FTP PUT <TextFormatFile>...after making the FTP connection in the command line shell...
According to the Intermec docs, I should also pass the port name but I'm assuming the printer is defaulting to it's one and only port setup...
The target name for the PUT must also be defaulting to the source name...still accepted by the printer...
I would like to implement this from within a c#/.NET program but WebRequestMethods.Ftp doesn't have a 'PUT' method but I was thinking the UploadFile might work...
Has anyone done any FTP style printing from program code (C#/.net)
See code section for more details.
According to the Intermec docs, I should also pass the port name but I'm assuming the printer is defaulting to it's one and only port setup...
The target name for the PUT must also be defaulting to the source name...still accepted by the printer...
I would like to implement this from within a c#/.NET program but WebRequestMethods.Ftp doesn't have a 'PUT' method but I was thinking the UploadFile might work...
Has anyone done any FTP style printing from program code (C#/.net)
See code section for more details.
Printer FTP is 'Intermec_nnnnnn' (nnnnnn is last 6 digits of MAC)...network/printer browsing actually shows it as: '\\Intermec_nnnn\BINARY_P1'
So...this prints a label...from windows shell
FTP Intermec_nnnnnn<CR>
PUT C:\MyLabel.txt
BYE
From C#...something like this (some of this is from some online postings)?
FileInfo fi = new FileInfo("C:\MyLabel.txt");
string lTarget = "ftp://Intermec_nnnnnn/BINARY_P1"; // Or without the /BINARY_P1
System.Net.FtpWebRequest ftp = (FtpWebRequest)System.Net.FtpWebRequest.Create(lTarget );
ftp.Credentials = new System.Net.NetworkCredential(<Username>, <Password>);
ftp.KeepAlive = false;
ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
ftp.UseBinary = true; // Or false?
ftp.ContentLength = fi.Length; // Maybe not?
const int BufferSize = 2048;
byte[] content = new byte[BufferSize - 1 + 1];
int dataRead ;
using (FileStream fs = fi.OpenRead())
{
try
{
using (Stream rs = ftp.GetRequestStream())
{
do
{
dataRead = fs.Read(content, 0, BufferSize);
rs.Write(content, 0, dataRead);
} while (!(dataRead < BufferSize));
rs.Close();
}
}
catch (Exception)
{
}
finally
{
fs.Close();
}
}
// eventually delete MyLabel.txt
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.