protected void Page_Load(object sender, EventArgs e) { #region Control de sesión if (Session["IDRED"] == null) { try { Response.Redirect("~/SesionCaducadaModal.aspx", true); } catch (System.Threading.ThreadAbortException) { return; } } #endregion string sTipo = Request.QueryString["sTipo"].ToString(); string[] sIDDOC = null; int nIDDOC = 0; switch (sTipo) { case "TIF": case "TAD": case "TAE": sIDDOC = Regex.Split(Request.QueryString["nIDDOC"].ToString(), "datos"); break; case "CVTCUR": case "CVTCUR_IMP": case "CVTEXAMEN": case "CVTCERT": case "CVTEXAMEN2": sIDDOC = Regex.Split(Request.QueryString["nIDDOC"].ToString(), "datos"); break; default: try { nIDDOC = int.Parse(Request.QueryString["nIDDOC"].ToString()); } catch (Exception e1) { string sError = "Descargar.aspx->Page_Load. Tipo=" + sTipo + " Id documento=" + Request.QueryString["nIDDOC"].ToString(); sError += " Ficepi=" + Session["IDFICEPI_PC_ACTUAL"].ToString() + " Error=" + e1.Message; throw (new Exception(sError)); } break; } #region Pruebas //string sPath = "", sNomFich=""; ////sPath = @"../../Upload/634527150288235168.txt"; ////sPath = Server.MapPath(@"/Upload/634527150288235168.txt"); ////sPath = @"d:\inetpub\wwwroot\SUPER\Upload\634527150288235168.txt"; //if (Request.QueryString["sPath"] != null) //{ // sNomFich = Utilidades.decodpar(Request.QueryString["sPath"].ToString()); // //sNomFich = "pepe.xml"; // //sPath = Server.MapPath(@"/SUPER/Upload/") + @"\" + sNomFich; // if (System.Configuration.ConfigurationManager.ConnectionStrings["ENTORNO"].ToString() == "D") // sPath = Server.MapPath(@"/SUPER/Upload/") + sNomFich; // else // sPath = Server.MapPath(@"/Upload/") + sNomFich; // //sPath = @"d:\inetpub\wwwroot\SUPER\Upload\634527150288235168.txt"; // //sPath = Server.MapPath(@"/Upload/634527150288235168.txt"); //} ////sPath = Server.MapPath(@"/Upload/634527150288235168.xml"); ////sNomFich = "634527150288235168.txt"; #endregion string sNombreArchivo = ""; byte[] ArchivoBinario = null; long? t2_iddocumento = null; Response.ClearContent(); Response.ClearHeaders(); Response.Buffer = true; if (Request.QueryString["descargaToken"] != null) { Response.AppendCookie(new HttpCookie("fileDownloadToken", Request.QueryString["descargaToken"].ToString())); //downloadTokenValue will have been provided in the form submit via the hidden input field } Response.ContentType = "application/octet-stream"; try { #region Leer archivo en función de la tabla solicitada switch (sTipo) { case "AS_T": //Asunto de Bitácora de TAREA DOCASU_T oDocAS_T = DOCASU_T.Select(null, nIDDOC); //, true); sNombreArchivo = oDocAS_T.t602_nombrearchivo; t2_iddocumento = oDocAS_T.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocAS_T.t602_archivo; break; case "AC_T": //Acción de Bitácora de TAREA DOCACC_T oDocAC_T = DOCACC_T.Select(null, nIDDOC); //, true); sNombreArchivo = oDocAC_T.t603_nombrearchivo; t2_iddocumento = oDocAC_T.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocAC_T.t603_archivo; break; case "AS_PT": //Asunto de Bitácora de PT DOCASU_PT oDocAS_PT = DOCASU_PT.Select(null, nIDDOC); //, true); sNombreArchivo = oDocAS_PT.t411_nombrearchivo; t2_iddocumento = oDocAS_PT.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocAS_PT.t411_archivo; break; case "AC_PT": //Acción de Bitácora de PT DOCACC_PT oDocAC_PT = DOCACC_PT.Select(null, nIDDOC); //, true); sNombreArchivo = oDocAC_PT.t412_nombrearchivo; t2_iddocumento = oDocAC_PT.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocAC_PT.t412_archivo; break; case "AS": //Asunto de Bitácora case "AS_PE": //Asunto de Bitácora DOCASU oDocAS = DOCASU.Select(null, nIDDOC); //, true); sNombreArchivo = oDocAS.t386_nombrearchivo; t2_iddocumento = oDocAS.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocAS.t386_archivo; break; case "AC": //Acción de Bitácora case "AC_PE": //Acción de Bitácora DOCACC oDocAC = DOCACC.Select(null, nIDDOC); //, true); sNombreArchivo = oDocAC.t387_nombrearchivo; t2_iddocumento = oDocAC.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocAC.t387_archivo; break; case "IAP_T": case "T": DOCUT oDocT = DOCUT.Select(null, nIDDOC); //, true); sNombreArchivo = oDocT.t363_nombrearchivo; t2_iddocumento = oDocT.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocT.t363_archivo; break; case "A": //Actividad DOCUA oDocA = DOCUA.Select(null, nIDDOC); //, true); sNombreArchivo = oDocA.t365_nombrearchivo; t2_iddocumento = oDocA.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocA.t365_archivo; break; case "F": //Fase DOCUF oDocF = DOCUF.Select(null, nIDDOC); //, true); sNombreArchivo = oDocF.t364_nombrearchivo; t2_iddocumento = oDocF.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocF.t364_archivo; break; case "PT": //Proyecto Técnico DOCUPT oDocPT = DOCUPT.Select(null, nIDDOC); //, true); sNombreArchivo = oDocPT.t362_nombrearchivo; t2_iddocumento = oDocPT.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocPT.t362_archivo; break; case "PE": //Proyecto Económico case "PSN": //Proyecto Económico DOCUPE oDocPE = DOCUPE.Select(null, nIDDOC); //, true); sNombreArchivo = oDocPE.t368_nombrearchivo; t2_iddocumento = oDocPE.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocPE.t368_archivo; break; case "PEF": //Espacio de acuerdo de Proyecto Económico DOC_ACUERDO_PROY oDocPEF = DOC_ACUERDO_PROY.Select(null, nIDDOC); //, true); sNombreArchivo = oDocPEF.t640_nombrearchivo; t2_iddocumento = oDocPEF.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocPEF.t640_archivo; break; case "HT": //Hito lineal case "HM": //Hito discontinuo DOCUH oDocH = DOCUH.Select(null, nIDDOC); //, true); sNombreArchivo = oDocH.t366_nombrearchivo; t2_iddocumento = oDocH.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocH.t366_archivo; break; case "HF": //Hito de fecha DOCUHE oDocHE = DOCUHE.Select(null, nIDDOC); //, true); sNombreArchivo = oDocHE.t367_nombrearchivo; t2_iddocumento = oDocHE.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocHE.t367_archivo; break; case "OF": //ORDEN DE FACTURACIÓN DOCUOF oDocOF = DOCUOF.Select(null, nIDDOC, true); sNombreArchivo = oDocOF.t624_nombrearchivo; t2_iddocumento = oDocOF.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocOF.t624_archivo; break; case "PL_OF": //PLANTILLA ORDEN DE FACTURACIÓN PLANTILLADOCUOF oDocPOF = PLANTILLADOCUOF.Select(null, nIDDOC); //, true); sNombreArchivo = oDocPOF.t631_nombrearchivo; t2_iddocumento = oDocPOF.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocPOF.t631_archivo; break; case "EC": //ESPACIO DE COMUNICACION DOCUEC oDocEC = DOCUEC.Select(null, nIDDOC); //, true); sNombreArchivo = oDocEC.t658_nombrearchivo; t2_iddocumento = oDocEC.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocEC.t658_archivo; break; case "DI": //DIALOGO DE ALERTA SUPER.Capa_Datos.DOCDIALOGO oDocDI = SUPER.Capa_Datos.DOCDIALOGO.Select(null, nIDDOC); //, true); sNombreArchivo = oDocDI.t837_nombrearchivo; t2_iddocumento = oDocDI.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocDI.t837_archivo; break; case "SC": //SOLICITUD DE CERTIFICADO SUPER.BLL.DOCSOLICITUD oDocSC = SUPER.BLL.DOCSOLICITUD.Select(null, nIDDOC); //, true); sNombreArchivo = oDocSC.t697_nombrearchivo; t2_iddocumento = oDocSC.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocSC.t697_archivo; break; case "CVTEXAMEN": //CURVIT EXAMEN if (Utilidades.isNumeric(sIDDOC[0].ToString())) { Examen oDocCVTE = Examen.SelectDoc(null, int.Parse(sIDDOC[0].ToString()), int.Parse(sIDDOC[1].ToString())); sNombreArchivo = oDocCVTE.T591_NDOC; //ArchivoBinario = oDocCVTE.T591_DOC; t2_iddocumento = oDocCVTE.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocCVTE.T591_DOC; } else { SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString()); sNombreArchivo = oDoc.t686_nombre; t2_iddocumento = oDoc.t2_iddocumento; } break; case "CVTEXAMEN2": //DESDE VARIABLE DE SESIÓN. NO ESTÁ AÚN GRABADO... sNombreArchivo = sIDDOC[1]; ArchivoBinario = (byte[])Session[Utilidades.decodpar(sIDDOC[0])]; break; case "CVTCERT": //CURVIT CERTIFICADO if (Utilidades.isNumeric(sIDDOC[0].ToString())) { Certificado oDocCVTC = Certificado.SelectDoc(null, int.Parse(sIDDOC[0].ToString()), int.Parse(sIDDOC[1].ToString())); sNombreArchivo = oDocCVTC.T593_NDOC; //ArchivoBinario = oDocCVTC.T593_DOC; t2_iddocumento = oDocCVTC.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oDocCVTC.T593_DOC; } else { SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString()); sNombreArchivo = oDoc.t686_nombre; t2_iddocumento = oDoc.t2_iddocumento; } break; case "TIF": //CURVIT TITULO IDIOMA FICEPI if (Utilidades.isNumeric(sIDDOC[0].ToString())) { TituloIdiomaFic o = TituloIdiomaFic.SelectDoc(null, int.Parse(sIDDOC[0].ToString())); sNombreArchivo = o.T021_NDOC; t2_iddocumento = o.t2_iddocumento; } else { SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString()); sNombreArchivo = oDoc.t686_nombre; t2_iddocumento = oDoc.t2_iddocumento; } break; case "CVTCUR": //CURVIT CURSO RECIBIDOS if (Utilidades.isNumeric(sIDDOC[0].ToString())) { Curso oCurso = Curso.SelectDoc(null, int.Parse(sIDDOC[0].ToString()), int.Parse(sIDDOC[1].ToString())); sNombreArchivo = oCurso.T575_NDOC; //ArchivoBinario = oCurso.T575_DOC; t2_iddocumento = oCurso.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oCurso.T575_DOC; } else { SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString()); sNombreArchivo = oDoc.t686_nombre; t2_iddocumento = oDoc.t2_iddocumento; } break; case "CVTCUR_IMP": //CURVIT CURSO IMPARTIDOS if (Utilidades.isNumeric(sIDDOC[0].ToString())) { Curso oCursoImp = Curso.SelectDoc2(null, int.Parse(sIDDOC[0].ToString()), int.Parse(sIDDOC[1].ToString())); sNombreArchivo = oCursoImp.T580_NDOC; //ArchivoBinario = oCursoImp.T580_DOC; t2_iddocumento = oCursoImp.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oCursoImp.T580_DOC; } else { SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString()); sNombreArchivo = oDoc.t686_nombre; t2_iddocumento = oDoc.t2_iddocumento; } break; case "CVTDOCTIT": //CURVIT TITULACION DOCUMENTO TITULO Titulacion oTitulo = Titulacion.SelectDoc(null, nIDDOC, "Tit"); sNombreArchivo = oTitulo.NDOC; //ArchivoBinario = oTitulo.DOC; t2_iddocumento = oTitulo.t2_iddocumento; //if (t2_iddocumento == null) ArchivoBinario = oTitulo.DOC; break; case "CVTDOCEX": //CURVIT TITULACION DOCUMENTO EXPEDIENTE Titulacion oTitulo1 = Titulacion.SelectDoc(null, nIDDOC, "Ex"); sNombreArchivo = oTitulo1.NDOC; //ArchivoBinario = oTitulo1.DOC; t2_iddocumento = oTitulo1.t2_iddocumentoExpte; //if (t2_iddocumento == null) ArchivoBinario = oTitulo1.DOC; break; case "TAD": //CURVIT TITULO FICEPI if (Utilidades.isNumeric(sIDDOC[0].ToString())) { TituloFicepi o = TituloFicepi.Select(int.Parse(sIDDOC[0].ToString())); sNombreArchivo = o.T012_NDOCTITULO; t2_iddocumento = o.t2_iddocumento; } else { SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString()); sNombreArchivo = oDoc.t686_nombre; t2_iddocumento = oDoc.t2_iddocumento; } break; case "TAE": //CURVIT Expediente TITULO FICEPI if (Utilidades.isNumeric(sIDDOC[0].ToString())) { TituloFicepi o = TituloFicepi.Select(int.Parse(sIDDOC[0].ToString())); sNombreArchivo = o.T012_NDOCEXPDTE; t2_iddocumento = o.t2_iddocumentoExpte; } else { SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString()); sNombreArchivo = oDoc.t686_nombre; t2_iddocumento = oDoc.t2_iddocumento; } break; } #endregion if (t2_iddocumento != null) { ArchivoBinario = IB.Conserva.ConservaHelper.ObtenerDocumento((long)t2_iddocumento).content; } Response.AddHeader("Content-Disposition", "attachment; filename=\"" + sNombreArchivo + "\""); if (HttpContext.Current.Request.Browser.Browser.ToString() == "Chrome") { Response.AddHeader("Content-Length", "999999999999"); } Response.BinaryWrite(ArchivoBinario); if (Response.IsClientConnected) { Response.Flush(); } } catch (ConservaException cex) { this.hdnError.Value = Utilidades.MsgErrorConserva("R", cex); } //catch (System.Web.HttpException hexc) //{ //} catch (Exception ex) { this.hdnError.Value = "No se ha podido obtener el archivo.<br /><br />Error: " + ex.Message; if (ex.InnerException != null) { this.hdnError.Value += "<br />Detalle error: " + ex.InnerException.Message; } } //Response.Flush(); finally { if (this.hdnError.Value == "") { Response.Close(); //Response.End(); } } }
public static DOCDIALOGO Select(SqlTransaction tr, int t837_id)//, bool bTraerArchivo) { DOCDIALOGO o = new DOCDIALOGO(); SqlParameter[] aParam = new SqlParameter[1]; int i = 0; aParam[i++] = ParametroSql.add("@t837_id", SqlDbType.Int, 4, t837_id); //aParam[i++] = ParametroSql.add("@bArchivo", SqlDbType.Bit, 1, bTraerArchivo); SqlDataReader dr; if (tr == null) { dr = SqlHelper.ExecuteSqlDataReader("SUP_DOCDIALOGO_S", aParam); } else { dr = SqlHelper.ExecuteSqlDataReaderTransaccion(tr, "SUP_DOCDIALOGO_S", aParam); } if (dr.Read()) { if (dr["t837_id"] != DBNull.Value) { o.t837_id = int.Parse(dr["t837_id"].ToString()); } if (dr["t831_iddialogoalerta"] != DBNull.Value) { o.t831_iddialogoalerta = int.Parse(dr["t831_iddialogoalerta"].ToString()); } if (dr["t837_descripcion"] != DBNull.Value) { o.t837_descripcion = (string)dr["t837_descripcion"]; } if (dr["t837_weblink"] != DBNull.Value) { o.t837_weblink = (string)dr["t837_weblink"]; } if (dr["t837_nombrearchivo"] != DBNull.Value) { o.t837_nombrearchivo = (string)dr["t837_nombrearchivo"]; } //El archivo lo obtenemos de Atenea si tiene id de documento y sino del campo image //if (bTraerArchivo) //{ // if (dr["t2_iddocumento"].ToString() == "") // o.t837_archivo = (byte[])dr["t837_archivo"]; //} if (dr["t001_idficepi_autor"] != DBNull.Value) { o.t001_idficepi_autor = int.Parse(dr["t001_idficepi_autor"].ToString()); } if (dr["t837_fecha"] != DBNull.Value) { o.t837_fecha = (DateTime)dr["t837_fecha"]; } if (dr["t001_idficepi_modif"] != DBNull.Value) { o.t001_idficepi_modif = int.Parse(dr["t001_idficepi_modif"].ToString()); } if (dr["t837_fechamodif"] != DBNull.Value) { o.t837_fechamodif = (DateTime)dr["t837_fechamodif"]; } if (dr["autor"] != DBNull.Value) { o.DesAutor = (string)dr["autor"]; } if (dr["autormodif"] != DBNull.Value) { o.DesAutorModif = dr["autormodif"].ToString(); } if (dr["t2_iddocumento"] != DBNull.Value) { o.t2_iddocumento = (long)dr["t2_iddocumento"]; } } else { throw (new NullReferenceException("No se ha obtenido ningun dato de DOCDIALOGO")); } dr.Close(); dr.Dispose(); return(o); }