307 lines
9.0 KiB
C#
307 lines
9.0 KiB
C#
using SteamWare;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
|
|
namespace MP_ADM.WebUserControls
|
|
{
|
|
public partial class cmp_fileUpload : BaseUserControl
|
|
{
|
|
#region Protected Fields
|
|
|
|
/// <summary>
|
|
/// Folder salvataggio file
|
|
/// </summary>
|
|
protected string _SqlCopyDir = memLayer.ML.CRS("_SqlCopyDir");
|
|
|
|
/// <summary>
|
|
/// Folder di upload temporaneo files
|
|
/// </summary>
|
|
protected string _tempUploadDir = memLayer.ML.CRS("_tempUploadDir");
|
|
|
|
#endregion Protected Fields
|
|
|
|
#region Public Events
|
|
|
|
/// <summary>
|
|
/// Evento upload e salvataggio su server IIS del file...
|
|
/// </summary>
|
|
public event EventHandler<FileUploadEventArgs> eh_FileUploaded;
|
|
|
|
#endregion Public Events
|
|
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// Prefisso file abilitato
|
|
/// </summary>
|
|
public string filePrefix
|
|
{
|
|
get
|
|
{
|
|
return hfFilePrefix.Value;
|
|
}
|
|
set
|
|
{
|
|
hfFilePrefix.Value = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Suffisso file abilitato (=tipo)
|
|
/// </summary>
|
|
public string fileSuffix
|
|
{
|
|
get
|
|
{
|
|
return hfFileSuffix.Value;
|
|
}
|
|
set
|
|
{
|
|
hfFileSuffix.Value = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Indica se fare redirect post upload
|
|
/// </summary>
|
|
public bool forceRedirect
|
|
{
|
|
get
|
|
{
|
|
bool answ = true;
|
|
bool.TryParse(hfForceRedirect.Value, out answ);
|
|
return answ;
|
|
}
|
|
set
|
|
{
|
|
hfForceRedirect.Value = value.ToString();
|
|
}
|
|
}
|
|
|
|
public bool isWriteEnabled
|
|
{
|
|
get
|
|
{
|
|
bool answ = false;
|
|
bool.TryParse(hfWriteEnabled.Value, out answ);
|
|
return answ;
|
|
}
|
|
set
|
|
{
|
|
hfWriteEnabled.Value = value.ToString();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// permesso scrittura SE E' abilitato a partire dalla tab diritti...
|
|
/// </summary>
|
|
public bool userIsAuth
|
|
{
|
|
get
|
|
{
|
|
return true;
|
|
//return (idxAmm + idxFornitore > 0);
|
|
}
|
|
}
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Private Methods
|
|
|
|
/// <summary>
|
|
/// Procedee a bonificare la cartella di upload dei files + vecchi di 3 mesi
|
|
/// </summary>
|
|
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(-1))
|
|
fi.Delete();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// fix visibilità controllo file upload
|
|
/// </summary>
|
|
/// <param name="showAdd">mostra controlli add=true oppure nasconde = false</param>
|
|
private void fisVisFU(bool showAdd)
|
|
{
|
|
divFileUpl.Visible = showAdd;
|
|
btnAdd.Visible = !showAdd;
|
|
lbtCancel.Visible = showAdd;
|
|
}
|
|
|
|
#endregion Private Methods
|
|
|
|
#region Protected Methods
|
|
|
|
protected void btnAdd_Click(object sender, EventArgs e)
|
|
{
|
|
fisVisFU(true);
|
|
lbtUpload.Text = traduci("AddNew");
|
|
}
|
|
|
|
protected void btnCancel_Click(object sender, EventArgs e)
|
|
{
|
|
Response.Redirect(Request.RawUrl);
|
|
}
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (!IsPostBack)
|
|
{
|
|
divMessagge.Visible = false;
|
|
fisVisFU(false);
|
|
deleteOldFiles();
|
|
}
|
|
divNewEdit.Visible = userIsAuth && isWriteEnabled;
|
|
}
|
|
|
|
protected void Upload(object sender, EventArgs e)
|
|
{
|
|
string uplFileName = "";
|
|
string uploadedFilename = "";
|
|
string batchName = "";
|
|
string savedFilename = "";
|
|
string contentType = "";
|
|
DateTime adesso = DateTime.Now;
|
|
string dirFrom = Server.MapPath(_tempUploadDir);
|
|
// se c'è un file
|
|
if (FileUpload1.PostedFile != null)
|
|
{
|
|
uploadedFilename = Path.GetFileName(FileUpload1.PostedFile.FileName.Replace(" ", "_")).ToLower();
|
|
// verifico suffisso sia corretto...
|
|
if (!string.IsNullOrEmpty(fileSuffix) && !uploadedFilename.EndsWith(fileSuffix.ToLower()))
|
|
{
|
|
divMessagge.Visible = true;
|
|
lblMessage.Text = $"{traduci("FileSuffixError")} {fileSuffix}";
|
|
}
|
|
else
|
|
{
|
|
// se sono a validare dxf...
|
|
if (fileSuffix == ".dxf")
|
|
{
|
|
uplFileName = uploadedFilename;
|
|
batchName = uploadedFilename;
|
|
}
|
|
else
|
|
{
|
|
// altrimenti per csv CNC/KIT..
|
|
uplFileName = $"{adesso.ToString("dd-HHmmss")}_{uploadedFilename}";
|
|
batchName = uploadedFilename.Replace(fileSuffix, "").Replace("cnc", "").Replace("kit", "");
|
|
}
|
|
savedFilename = Server.MapPath($"{_tempUploadDir}{uplFileName}");
|
|
divMessagge.Visible = false;
|
|
// verifica preliminare del PRE del name...
|
|
if (!string.IsNullOrEmpty(filePrefix) && !uploadedFilename.StartsWith(filePrefix.ToLower()))
|
|
{
|
|
divMessagge.Visible = true;
|
|
lblMessage.Text = $"{traduci("FilePrefixError")} {filePrefix}";
|
|
}
|
|
else
|
|
{
|
|
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();
|
|
// log!
|
|
logger.lg.scriviLog($"Effettuato salvataggio file {uploadedFilename} come {savedFilename}");
|
|
}
|
|
// segnaloc he ho CARICATO IN LOCALE il file
|
|
reportFileUploaded(new FileUploadEventArgs(dirFrom, uplFileName, batchName));
|
|
}
|
|
}
|
|
}
|
|
if (forceRedirect)
|
|
{
|
|
Response.Redirect(Request.RawUrl);
|
|
}
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Public Methods
|
|
|
|
/// <summary>
|
|
/// Solelva evento salvataggio file con messaggio path/nome
|
|
/// </summary>
|
|
/// <param name="localPath"></param>
|
|
/// <param name="fileName"></param>
|
|
public void reportFileUploaded(FileUploadEventArgs e)
|
|
{
|
|
EventHandler<FileUploadEventArgs> handler = eh_FileUploaded;
|
|
if (handler != null)
|
|
{
|
|
handler(this, e);
|
|
}
|
|
}
|
|
|
|
#endregion Public Methods
|
|
}
|
|
|
|
public class FileUploadEventArgs : EventArgs
|
|
{
|
|
#region Private Fields
|
|
|
|
private string _batchName;
|
|
|
|
private string _fileName;
|
|
|
|
private string _localPath;
|
|
|
|
#endregion Private Fields
|
|
|
|
#region Public Constructors
|
|
|
|
/// <summary>
|
|
/// Evento con argomenti soppevato post fileUpload
|
|
/// </summary>
|
|
/// <param name="localPath"></param>
|
|
/// <param name="fileName"></param>
|
|
/// <param name="batchName"></param>
|
|
public FileUploadEventArgs(string localPath, string fileName, string batchName)
|
|
{
|
|
_localPath = localPath;
|
|
_fileName = fileName;
|
|
_batchName = batchName;
|
|
}
|
|
|
|
#endregion Public Constructors
|
|
|
|
#region Public Properties
|
|
|
|
public string BatchName
|
|
{
|
|
get { return _batchName; }
|
|
set { _batchName = value; }
|
|
}
|
|
|
|
public string FileName
|
|
{
|
|
get { return _fileName; }
|
|
set { _fileName = value; }
|
|
}
|
|
|
|
public string LocalPath
|
|
{
|
|
get { return _localPath; }
|
|
set { _localPath = value; }
|
|
}
|
|
|
|
#endregion Public Properties
|
|
}
|
|
} |