Я пытаюсь создать отчет в формате PDF из базы данных и скопировать этот файл в sharedFolder на другом сервере. Но каждый раз, когда я его отправляю, исключение системного выброса говорит, что файл не найден, даже когда File.exist возвращает true. Так что я планирую создать его непосредственно в sharedFolder, это возможно? Вот код, который я уже создал.
var reportDataSource1 = new ReportDataSource(table.TableName, table);
ReportViewer viewer = new ReportViewer();
viewer.ProcessingMode = ProcessingMode.Local;
viewer.LocalReport.DataSources.Add(reportDataSource1);
viewer.LocalReport.ReportPath = @"C:\Test\GRN.rdl";
PDFExport(viewer.LocalReport, headerDiff[i].Trim());
sendPdfUsingFtp()
private static void PDFExport(LocalReport localReport, string header)
{
Warning[] warnings;
string[] streamids;
string mimetype;
string encoding;
string filenameExtension;
byte[] bytes = localReport.Render("PDF", null, out mimetype, out encoding, out filenameExtension, out streamids, out warnings);
try
{
using (FileStream fs = new FileStream(@ConfigurationSettings.AppSettings["reportDir"] + "GNR-" + header.Replace(" ", "_") + ".pdf", FileMode.Create))
{
fs.Write(bytes, 0, bytes.Length);
fs.Flush();
fs.Close();
}
Console.WriteLine("File.Exists(" + @ConfigurationSettings.AppSettings["reportDir"] + "GNR-" + header.Replace(" ", "_") + ".pdf" + ") = " + File.Exists(@ConfigurationSettings.AppSettings["reportDir"] + "GNR-" + header.Replace(" ", "_") + ".pdf"));
//this return true
}
catch(Exception e)
{
createLog(e.Message);
}
}
public void sendPdfUsingFtp()
{
string server = "ftp://192.168.100.50/Baru"; //ftp server url
string userName = "Admin";
string password = "password";
if (headerDiff.Length > 0)
{
for (int i = 0; i < headerDiff.Length; i++)
{
String files = @ConfigurationSettings.AppSettings["reportDir"] + "GRN-" + headerDiff[i].Trim().Replace(" ", "_") + ".pdf";
try
{
Boolean exist = File.Exists(@files); // this return false
if (exist)
{
string[] pdfList = Directory.GetFiles(@ConfigurationSettings.AppSettings["reportDir"], "GRN-" + headerDiff[i].Trim().Replace(" ", "_") + ".pdf");
foreach (string f in pdfList)
{
Console.WriteLine("file = " + f);
string name = f.Substring(@ConfigurationSettings.AppSettings["reportDir"].Length);
string fileName = Path.GetFileName(@ConfigurationSettings.AppSettings["reportDir"] + "GRN-" + headerDiff[i].Trim().Replace(" ", "_") + ".pdf");
string uploadUrl = string.Format("{0}/{1}", server, fileName);
FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create(uploadUrl);
req.Proxy = null;
req.Method = WebRequestMethods.Ftp.UploadFile;
req.Credentials = new NetworkCredential(userName, password);
req.UseBinary = true;
req.UsePassive = true;
FileStream fs = File.OpenRead(@ConfigurationSettings.AppSettings["reportDir"] + "GRN-" + headerDiff[i].Trim().Replace(" ", "_") + ".pdf");
byte[] data = new byte[fs.Length];
fs.Read(data, 0, data.Length);
Stream stream = req.GetRequestStream();
stream.Write(data, 0, data.Length);
Console.WriteLine("Upload " + "GRN-" + headerDiff[i].Trim() + ".pdf" + " done!");
fs.Close();
stream.Close();
}
}
}
catch (Exception ex)
{
createLog(ex.Message);
updateLogTable("RCVN", headerDiff[i], "FTP", 0, ex.Message);
}
}
}
}