public static bool UploadFile(string _sourcefile, string _targetfile, string _user, string _pass) { bool up = false; try { System.Net.FtpWebRequest ftp = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(_targetfile); ftp.Credentials = new System.Net.NetworkCredential(_user, _pass); //userid and password for the ftp server to given ftp.UseBinary = true; ftp.UsePassive = true; ftp.EnableSsl = Core.Global.GetConfig().ConfigFTPSSL; ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; System.IO.FileStream fs = System.IO.File.OpenRead(_sourcefile); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); System.IO.Stream ftpstream = ftp.GetRequestStream(); ftpstream.Write(buffer, 0, buffer.Length); ftpstream.Close(); ftp.Abort(); up = true; } catch (Exception ex) { Core.Log.WriteLog(ex.ToString(), true); } return(up); }
/// <summary> /// Open Ftp file in a MemoryStream for read only. The FtpStream is copied in a MemoryStream. /// </summary> /// <param name="pStream">The ouput stream.</param> /// <param name="connectionGroupName">The group name for the connection</param> private void OpenReadFtpFile(out System.IO.Stream pStream, string connectionGroupName) { pStream = null; try { System.Net.FtpWebRequest lRequestFileDl = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(_filePath); try { lRequestFileDl.ConnectionGroupName = connectionGroupName; lRequestFileDl.Method = System.Net.WebRequestMethods.Ftp.DownloadFile; System.Net.FtpWebResponse lResponseFileDl = (System.Net.FtpWebResponse)lRequestFileDl.GetResponse(); try { FileInfo lDestFileInfo = new FileInfo(_destRemoteFile); using (System.IO.FileStream lFileStream = lDestFileInfo.OpenWrite()) { using (System.IO.Stream lStream = lResponseFileDl.GetResponseStream()) { int i = 0; byte[] bytes = new byte[2048]; do { i = lStream.Read(bytes, 0, bytes.Length); lFileStream.Write(bytes, 0, i); } while (i != 0); lStream.Close(); } lFileStream.Close(); } pStream = lDestFileInfo.OpenRead(); pStream.Seek(0, System.IO.SeekOrigin.Begin); } finally { lResponseFileDl.Close(); } } finally { try { lRequestFileDl.Abort(); } catch (NotImplementedException) { // Ignore the not implemented exception } } } catch (Exception ex) { PIS.Ground.Core.LogMgmt.LogManager.WriteLog(TraceType.ERROR, ex.Message, "PIS.Ground.Core.Data.RemoteFileClass", ex, EventIdEnum.GroundCore); } }
public void CancelUpload(string UploadFileName) { if (UploadFileStream != null) { UploadFileStream.Close(); UploadFTPRequest.Abort(); //UploadFileInfo.Delete(); UploadCanceled = true; UploadFTPRequest = null; this.FtpDelete(UploadFileName); MessageBox.Show("Upload Canceled"); } }
public void CancelDownload() { if (DownloadFileStream != null) { DownloadFileStream.Close(); DownloadFTPRequest.Abort(); DownloadResponse.Close(); DownloadResponseStream.Close(); //DownloadFileStream = null; //DownloadResponseStream = null; TargetFileInfo.Delete(); DownloadCanceled = true; MessageBox.Show("Download Canceled"); } }
private void worker_DoWork(object sender, DoWorkEventArgs e) { /* Create an FTP Request */ ftpRequest = (FtpWebRequest)FtpWebRequest.Create(data.adress + "/" + remoteFile); /* Log in to the FTP Server with the User Name and Password Provided */ ftpRequest.Credentials = new NetworkCredential(data.login, data.password); /* When in doubt, use these options */ ftpRequest.UseBinary = true; ftpRequest.UsePassive = true; ftpRequest.KeepAlive = true; /* Specify the Type of FTP Request */ ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; /* Establish Return Communication with the FTP Server */ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); /* Get the FTP Server's Response Stream */ ftpStream = ftpResponse.GetResponseStream(); /* Open a File Stream to Write the Downloaded File */ Directory.CreateDirectory(Path.GetDirectoryName(localFile)); localFileStream = new FileStream(localFile, FileMode.Create); /* Buffer for the Downloaded Data */ byte[] byteBuffer = new byte[bufferSize]; int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize); int totalBytesRead = bytesRead; /* Download the File by Writing the Buffered Data Until the Transfer is Complete */ while (bytesRead > 0) { if (cancel) { localFileStream.Close(); ftpRequest.Abort(); ftpStream.Close(); ftpResponse.Close(); ftpRequest = null; ftpResponse = null; ftpStream = null; localFileStream = null; e.Cancel = true; return; } localFileStream.Write(byteBuffer, 0, bytesRead); bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize); totalBytesRead += bytesRead; double progress = totalBytesRead * 100.0 / fileSize; WorkerState state = new WorkerState(fileSize, totalBytesRead); worker.ReportProgress((int)progress, state); } /* Resource Cleanup */ localFileStream.Close(); ftpStream.Close(); ftpResponse.Close(); ftpRequest = null; }
private void ExecImage(string FTP, string User, string Password, Model.Local.Article Article, Model.Local.ArticleImage ArticleImage, Model.Local.ArticleImageRepository ArticleImageRepository) { Model.Prestashop.PsImageRepository PsImageRepository = new Model.Prestashop.PsImageRepository(); Model.Prestashop.PsImage PsImage = null; Model.Prestashop.PsImageLangRepository PsImageLangRepository = new Model.Prestashop.PsImageLangRepository(); Model.Prestashop.PsImageLang PsImageLang; Boolean isImageLang = false; Model.Prestashop.PsImageTypeRepository PsImageTypeRepository = new Model.Prestashop.PsImageTypeRepository(); List <Model.Prestashop.PsImageType> ListPsImageType = PsImageTypeRepository.ListProduct(1); try { if (ArticleImage.Pre_Id == null) { PsImage = new Model.Prestashop.PsImage(); PsImage.IDProduct = Convert.ToUInt32(Article.Pre_Id); PsImage.Position = (ushort)ExecPosition((uint)Article.Pre_Id.Value, (uint)ArticleImage.ImaArt_Position, PsImageRepository, PsImage); PsImage.Cover = ExecCover((uint)Article.Pre_Id.Value, ArticleImage.ImaArt_Default, PsImageRepository, PsImage); PsImageRepository.Add(PsImage, Global.CurrentShop.IDShop); #region lang isImageLang = false; PsImageLang = new Model.Prestashop.PsImageLang(); if (PsImageLangRepository.ExistImageLang(PsImage.IDImage, Core.Global.Lang)) { PsImageLang = PsImageLangRepository.ReadImageLang(PsImage.IDImage, Core.Global.Lang); isImageLang = true; } PsImageLang.Legend = ArticleImage.ImaArt_Name; if (isImageLang == true) { PsImageLangRepository.Save(); } else { PsImageLang.IDImage = PsImage.IDImage; PsImageLang.IDLang = Core.Global.Lang; PsImageLangRepository.Add(PsImageLang); } // <JG> 26/12/2012 ajout insertion autres langues actives si non renseignées try { Model.Prestashop.PsLangRepository PsLangRepository = new Model.Prestashop.PsLangRepository(); foreach (Model.Prestashop.PsLang PsLang in PsLangRepository.ListActive(1, Global.CurrentShop.IDShop)) { if (!PsImageLangRepository.ExistImageLang(PsImage.IDImage, PsLang.IDLang)) { PsImageLang = new Model.Prestashop.PsImageLang() { IDImage = PsImage.IDImage, IDLang = PsLang.IDLang, Legend = ArticleImage.ImaArt_Name }; PsImageLangRepository.Add(PsImageLang); } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } #endregion try { // <JG> 10/04/2013 gestion système d'images string ftpPath = "/img/p/"; switch (Core.Global.GetConfig().ConfigImageStorageMode) { case Core.Parametres.ImageStorageMode.old_system: #region old_system // no action on path break; #endregion case Core.Parametres.ImageStorageMode.new_system: default: #region new_system //System.Net.FtpWebRequest ftp_folder = null; foreach (char directory in PsImage.IDImage.ToString()) { ftpPath += directory + "/"; #region MyRegion try { FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(FTP + ftpPath); request.Credentials = new NetworkCredential(User, Password); request.UsePassive = true; request.UseBinary = true; request.KeepAlive = false; request.EnableSsl = Core.Global.GetConfig().ConfigFTPSSL; request.Method = WebRequestMethods.Ftp.MakeDirectory; FtpWebResponse makeDirectoryResponse = (FtpWebResponse)request.GetResponse(); } catch //Exception ex { //System.Windows.MessageBox.Show(ex.ToString()); } #endregion //try //{ // ftp_folder = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(FTP + ftpPath); // ftp_folder.Credentials = new System.Net.NetworkCredential(User, Password); // ftp_folder.UseBinary = true; // ftp_folder.UsePassive = true; // ftp_folder.KeepAlive = false; // ftp_folder.Method = System.Net.WebRequestMethods.Ftp.MakeDirectory; // System.Net.FtpWebResponse response = (System.Net.FtpWebResponse)ftp_folder.GetResponse(); // System.IO.Stream ftpStream = response.GetResponseStream(); // ftpStream.Close(); // response.Close(); //} //catch(Exception ex) //{ // System.Windows.MessageBox.Show(ex.ToString()); //} } break; #endregion } #region Upload des images String extension = ArticleImage.GetExtension; if (System.IO.File.Exists(ArticleImage.TempFileName)) { string ftpfullpath = (Core.Global.GetConfig().ConfigImageStorageMode == Core.Parametres.ImageStorageMode.old_system) ? FTP + ftpPath + PsImage.IDProduct + "-" + PsImage.IDImage + ".jpg" : FTP + ftpPath + PsImage.IDImage + ".jpg"; System.Net.FtpWebRequest ftp = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(ftpfullpath); ftp.Credentials = new System.Net.NetworkCredential(User, Password); //userid and password for the ftp server to given ftp.UseBinary = true; ftp.UsePassive = true; ftp.EnableSsl = Core.Global.GetConfig().ConfigFTPSSL; ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; System.IO.FileStream fs = System.IO.File.OpenRead(ArticleImage.TempFileName); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); System.IO.Stream ftpstream = ftp.GetRequestStream(); ftpstream.Write(buffer, 0, buffer.Length); ftpstream.Close(); ftp.Abort(); } foreach (Model.Prestashop.PsImageType PsImageType in ListPsImageType) { String PathImg = ArticleImage.FileName(PsImageType.Name); if (System.IO.File.Exists(PathImg)) { string ftpfullpath = (Core.Global.GetConfig().ConfigImageStorageMode == Core.Parametres.ImageStorageMode.old_system) ? FTP + ftpPath + PsImage.IDProduct + "-" + PsImage.IDImage + "-" + PsImageType.Name + ".jpg" : FTP + ftpPath + PsImage.IDImage + "-" + PsImageType.Name + ".jpg"; System.Net.FtpWebRequest ftp = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(ftpfullpath); ftp.Credentials = new System.Net.NetworkCredential(User, Password); //userid and password for the ftp server to given ftp.UseBinary = true; ftp.UsePassive = true; ftp.EnableSsl = Core.Global.GetConfig().ConfigFTPSSL; ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; System.IO.FileStream fs = System.IO.File.OpenRead(PathImg); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); System.IO.Stream ftpstream = ftp.GetRequestStream(); ftpstream.Write(buffer, 0, buffer.Length); ftpstream.Close(); ftp.Abort(); } } #endregion ArticleImage.Pre_Id = Convert.ToInt32(PsImage.IDImage); ArticleImageRepository.Save(); } catch (Exception ex) { Core.Error.SendMailError("[UPLOAD FTP IMAGE ARTICLE]<br />" + ex.ToString()); PsImageLangRepository.DeleteAll(PsImageLangRepository.ListImage(PsImage.IDImage)); PsImageRepository.Delete(PsImage); } } // option car si PAS GADA écrase infos PS else if (Core.Global.GetConfig().ConfigImageSynchroPositionLegende) { PsImage = new Model.Prestashop.PsImage(); if (PsImageRepository.ExistImage((uint)ArticleImage.Pre_Id)) { PsImage = PsImageRepository.ReadImage((uint)ArticleImage.Pre_Id); if (PsImage.Position != (UInt16)ArticleImage.ImaArt_Position || PsImage.Cover != #if (PRESTASHOP_VERSION_172 || PRESTASHOP_VERSION_161) ((ArticleImage.ImaArt_Default) ? Convert.ToByte(ArticleImage.ImaArt_Default) : (byte?)null)) #else Convert.ToByte(ArticleImage.ImaArt_Default)) #endif { PsImage.Position = (ushort)ExecPosition((uint)Article.Pre_Id, (uint)ArticleImage.ImaArt_Position, PsImageRepository, PsImage); PsImage.Cover = ExecCover((uint)Article.Pre_Id, ArticleImage.ImaArt_Default, PsImageRepository, PsImage); PsImageRepository.Save(); Model.Prestashop.PsImageShopRepository PsImageShopRepository = new Model.Prestashop.PsImageShopRepository(); Model.Prestashop.PsImageShop PsImageShop = PsImageShopRepository.ReadImage(PsImage.IDImage); if (PsImageShop != null && PsImageShop.Cover != #if (PRESTASHOP_VERSION_160) (sbyte)PsImage.Cover #else PsImage.Cover #endif ) { #if (PRESTASHOP_VERSION_160) PsImageShop.Cover = (sbyte)PsImage.Cover; #else PsImageShop.Cover = PsImage.Cover; #endif PsImageShopRepository.Save(); } } #region lang PsImageLang = new Model.Prestashop.PsImageLang(); isImageLang = false; if (PsImageLangRepository.ExistImageLang(PsImage.IDImage, Core.Global.Lang)) { PsImageLang = PsImageLangRepository.ReadImageLang(PsImage.IDImage, Core.Global.Lang); isImageLang = true; } PsImageLang.Legend = ArticleImage.ImaArt_Name; if (isImageLang == true) { PsImageLangRepository.Save(); } else { PsImageLang.IDImage = PsImage.IDImage; PsImageLang.IDLang = Core.Global.Lang; PsImageLangRepository.Add(PsImageLang); } // <JG> 26/12/2012 ajout insertion autres langues actives si non renseignées try { Model.Prestashop.PsLangRepository PsLangRepository = new Model.Prestashop.PsLangRepository(); foreach (Model.Prestashop.PsLang PsLang in PsLangRepository.ListActive(1, Global.CurrentShop.IDShop)) { if (!PsImageLangRepository.ExistImageLang(PsImage.IDImage, PsLang.IDLang)) { PsImageLang = new Model.Prestashop.PsImageLang() { IDImage = PsImage.IDImage, IDLang = PsLang.IDLang, Legend = ArticleImage.ImaArt_Name }; PsImageLangRepository.Add(PsImageLang); } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } #endregion } } } catch (Exception ex) { Core.Error.SendMailError("[SYNCHRO IMAGE ARTICLE]<br />" + ex.ToString()); if (PsImage != null) { PsImageLangRepository.DeleteAll(PsImageLangRepository.ListImage(PsImage.IDImage)); PsImageRepository.Delete(PsImage); } } }
private bool DownloadDll(Stream stream, FtpWebRequest reqFtp, string newVersion, string newName, out string newFileLocation) { if (Directory.Exists(Furniture.Helpers.LocalAccounts.modelPathResult.Replace("_SWLIB_", "_SWLIB_BACKUP"))) { string warnMessage = @"�������� ���� �������� ! � ������ ������ ��� �������������� ������� ������� ��������� ������, ��������� ������� � ��������� ����������� ������ ����� ���� ��� ! � ������ ������� �������������� ������� (���� ����\��������)�������� ����������� ������ � �� ����������� ���������,���������� � ��������� ������������ ������� �� ������������ � ��������� ������������ ������� ����������."; MessageBox.Show(warnMessage, "��������!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } stream.Close(); reqFtp.Abort(); //long size = GetSizeForFurnitureDll(Properties.Settings.Default.FurnFtpPath + newVersion); long size = GetSizeForFurnitureDll(Furniture.Helpers.FtpAccess.resultFtp + newVersion); UserProgressBar pb; SwApp.GetUserProgressBar(out pb); FileStream fileStream = null; try { fileStream = new FileInfo(newName).Create(); } catch (Exception) { MessageBox.Show("�� �������� ������� ���� " + newName + "�������� ��-�� ���� ��� ��� ��� ���� ����� �������."); } var wc = new WebClient { Credentials = new NetworkCredential(Properties.Settings.Default.FurnFtpName, Properties.Settings.Default.FurnFtpPass) }; var str = //wc.OpenRead(Properties.Settings.Default.FurnFtpPath + newVersion + "/Furniture.dll"); wc.OpenRead(Furniture.Helpers.FtpAccess.resultFtp + newVersion + "/Furniture.dll"); const int bufferSize = 1024; var z = (int)(size / bufferSize); var buffer = new byte[bufferSize]; int readCount = str.Read(buffer, 0, bufferSize); pb.Start(0, z, "���������� ���������"); int i = 0; while (readCount > 0) { fileStream.Write(buffer, 0, readCount); readCount = str.Read(buffer, 0, bufferSize); pb.UpdateProgress(i); i++; } pb.End(); fileStream.Close(); wc.Dispose(); newFileLocation = newName; return true; }
/// <summary> /// Initialization for a ftp remote file (i.e ftp://). Use FtpWebRequest for checking path. Then /// open a stream and get file size. Use Utility.Crc32 to calculate the CRC on the stream. All /// errors are catch and write in log manager. /// </summary> private void mInitFtpFile() { try { string connectionGroupName = Guid.NewGuid().ToString(); System.Net.FtpWebRequest lRequest = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(_filePath); lRequest.ConnectionGroupName = connectionGroupName; ServicePoint servicePoint = lRequest.ServicePoint; try { lRequest.Method = System.Net.WebRequestMethods.Ftp.GetFileSize; using (System.Net.WebResponse lResponse = lRequest.GetResponse()) { _exists = true; _fileType = FileTypeEnum.FtpFile; //CalculCRC Utility.Crc32 lCrcCalculator = new PIS.Ground.Core.Utility.Crc32(); System.IO.Stream lFileStream; OpenReadFtpFile(out lFileStream, connectionGroupName); if (lFileStream != null) { using (lFileStream) { _size = lFileStream.Length; _crc = lCrcCalculator.CalculateChecksum(lFileStream); } } else { PIS.Ground.Core.LogMgmt.LogManager.WriteLog(PIS.Ground.Core.Data.TraceType.ERROR, "OpenReadFtpFile returned null file", "PIS.Ground.Core.Data.RemoteFileClass", null, EventIdEnum.GroundCore); } } } finally { if (lRequest != null) { try { lRequest.Abort(); } catch (NotImplementedException) { // Ignore the not implemented exception } } if (servicePoint != null) { servicePoint.CloseConnectionGroup(connectionGroupName); servicePoint = null; } } } catch (NotSupportedException lEx) { PIS.Ground.Core.LogMgmt.LogManager.WriteLog(TraceType.ERROR, "mInitFtpFile() NotSupportedException with FilePath : " + _filePath, "PIS.Ground.Core.Data.RemoteFileClass", lEx, EventIdEnum.GroundCore); } catch (System.Security.SecurityException lEx) { PIS.Ground.Core.LogMgmt.LogManager.WriteLog(TraceType.ERROR, "mInitFtpFile() SecurityException with FilePath : " + _filePath, "PIS.Ground.Core.Data.RemoteFileClass", lEx, EventIdEnum.GroundCore); } catch (UriFormatException lEx) { PIS.Ground.Core.LogMgmt.LogManager.WriteLog(TraceType.ERROR, "mInitFtpFile() UriFormatException with FilePath : " + _filePath, "PIS.Ground.Core.Data.RemoteFileClass", lEx, EventIdEnum.GroundCore); } catch (Exception lEx) { PIS.Ground.Core.LogMgmt.LogManager.WriteLog(TraceType.ERROR, "mInitFtpFile() UnsupportedException with FilePath : " + _filePath, "PIS.Ground.Core.Data.RemoteFileClass", lEx, EventIdEnum.GroundCore); } }