using SteamWare; using System; using System.IO; namespace NKC_WF.WebUserContols { public class FileUploadEventArgs : EventArgs { /// /// Evento con argomenti soppevato post fileUpload /// /// /// /// public FileUploadEventArgs(string localPath, string fileName, string batchName) { _localPath = localPath; _fileName = fileName; _batchName = batchName; } private string _localPath; private string _fileName; private string _batchName; public string LocalPath { get { return _localPath; } set { _localPath = value; } } public string FileName { get { return _fileName; } set { _fileName = value; } } public string BatchName { get { return _batchName; } set { _batchName = value; } } } public partial class cmp_fileUpload : BaseUserControl { /// /// Evento upload e salvataggio su server IIS del file... /// public event EventHandler eh_FileUploaded; /// /// Solelva evento salvataggio file con messaggio path/nome /// /// /// public void reportFileUploaded(FileUploadEventArgs e) { EventHandler handler = eh_FileUploaded; if (handler != null) { handler(this, e); } } /// /// Folder di upload temporaneo files /// protected string _tempUploadDir = memLayer.ML.CRS("_tempUploadDir"); /// /// Folder REMOTA x copia verso SQL /// protected string _SqlCopyDir = memLayer.ML.CRS("_SqlCopyDir"); /// /// Folder x SQL import /// protected string _SqlImportDir = memLayer.ML.CRS("_SqlImportDir"); /// /// permesso scrittura SE E' abilitato a aprtire dalla tab diritti... /// public bool userIsAuth { get { return true; //return (idxAmm + idxFornitore > 0); } } public bool isWriteEnabled { get { bool answ = false; bool.TryParse(hfWriteEnabled.Value, out answ); return answ; } set { hfWriteEnabled.Value = value.ToString(); } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { fisVisFU(false); deleteOldFiles(); } divNewEdit.Visible = userIsAuth && isWriteEnabled; } /// /// Procedee a bonificare la cartella di upload dei files + vecchi di 3 mesi /// private void deleteOldFiles() { string dirPath = Server.MapPath(_tempUploadDir); // elenco files nella directory string[] files = Directory.GetFiles(dirPath); // li guardo tutti e se vecchi li elimino... foreach (string file in files) { FileInfo fi = new FileInfo(file); if (fi.LastAccessTime < DateTime.Now.AddMonths(-3)) fi.Delete(); } } protected void Upload(object sender, EventArgs e) { string csvFileName = ""; string uploadedFilename = ""; string batchName = ""; string savedFilename = ""; string contentType = ""; DateTime adesso = DateTime.Now; string dirFrom = Server.MapPath(_tempUploadDir); string dirTo = $"{_SqlCopyDir}{adesso.ToString("yyyy-MM")}\\"; string dirImport = $"{_SqlImportDir}{adesso.ToString("yyyy-MM")}\\"; // se c'è un file if (FileUpload1.PostedFile != null) { uploadedFilename = Path.GetFileName(FileUpload1.PostedFile.FileName.Replace(" ", "_")); csvFileName = $"{adesso.ToString("dd-HHmmss")}_{uploadedFilename}"; batchName = uploadedFilename.Replace(".csv", ""); savedFilename = Server.MapPath($"{_tempUploadDir}{csvFileName}"); contentType = FileUpload1.PostedFile.ContentType; // accedo allo stream del file allegato using (Stream fs = FileUpload1.PostedFile.InputStream) { // scrivo su file FileStream file = new FileStream(savedFilename, FileMode.Create, FileAccess.Write); fs.CopyTo(file); file.Close(); } reportFileUploaded(new FileUploadEventArgs(dirFrom, csvFileName, batchName)); #if false try { // copio su SQL... fileMover.obj.copiaFile(dirFrom, dirTo, csvFileName); // chiamo procedura SQL x import... DataLayer.man.taImpLog.importCsvOrd($"{dirImport}", csvFileName, batchName, ";", "\n", "2", 0, 0, 0); raiseEvent(); } catch (Exception exc) { logger.lg.scriviLog($"Eccezione in Upload file:{Environment.NewLine}{exc}"); } #endif } Response.Redirect(Request.RawUrl); } protected void btnAdd_Click(object sender, EventArgs e) { fisVisFU(true); btnUpload.Text = "Carica Nuovo"; } /// /// fix visibilità controllo file upload /// /// mostra controlli add=true oppure nasconde = false private void fisVisFU(bool showAdd) { divFileUpl.Visible = showAdd; btnAdd.Visible = !showAdd; btnCancel.Visible = showAdd; } protected void btnCancel_Click(object sender, EventArgs e) { fisVisFU(false); } } }