Esto funciona sin Flash instalado y Flash instalado pero deshabilitado. Solo lo he confirmado en IE7-9 y FF19 pero debería funcionar en cualquier navegador que pueda usar la versión de Uploadify SWF.
En el html tienen 2 divs. Uno sin Flash y para con Flash
<div id="uploadifyDiv" runat="server" style="float: left; width: 100%; margin-top: 10px;">
<div id="uploadifyNoFlashDiv">
<p style="font-weight:bold; background-color:Red; color:Black;">Flash is not installed or is not enabled</p>
File upload requires Flash to be installed and enabled.<br />
Click <a href="http://get2.adobe.com/flashplayer/" target="_blank">here</a> to install<br />
You will need to <a href="javascript:window.location.href=window.location.href">refresh</a> the page when installation is completed</p>
</div>
<div id="uploadifyHasFlashDiv" style="display:none;">
<asp:FileUpload ID="ImageFileUpload" runat="server" />
</div>
</div>
En el guión Uploadify incluyen una función para onInit
onInit : function(instance) {
$('[id$="uploadifyNoFlashDiv"]').css('display','none');
$('[id$="uploadifyHasFlashDiv"]').css('display','block');},
Si Flash no instalado o instalado pero no activado, a continuación, se mostrará el div uploadifyNoFlashDiv , de lo contrario, OnInit ocultará el elemento uploadifyNoFlashDiv div y mostrará el elemento uploadifyHasFlashDiv div que, asumiendo que todo lo demás está bien, generará el control Uploadify.
Por supuesto, esto no proporciona ninguna funcionalidad si el usuario no instalar Flash pero sí al menos
- Ver el mensaje correspondiente asesoramiento que necesitan para instalar Flash (o activarlo si ya está instalado)
- Ocultar el FileUpload genérico que aparece si falla el script Uploadify
IMHO Uploadify sigue siendo superior a los otros cargadores mencionados como alternativas, ya que es el único que proporciona selección de archivos múltiples en navegadores que no son HTML5, que lamentablemente incluye IE9 en Win7. Todos los demás cargadores solo permiten seleccionar un solo archivo en el cuadro de diálogo del archivo.
EDITAR: En conexiones lentas, el div instalado No Flash se mostrará antes de que el script Uploadify tenga la oportunidad de ejecutarse, lo cual es confuso para el usuario si tiene Flash instalado y el div finalmente se ocultará. En este escenario, agregue otro div con un gif de carga y luego ejecute un script en la carga del documento para mostrar el div apropiado.
<div id="uploadifyDiv" runat="server" style="float: left; width: 100%; margin-top: 10px;">
<div id="uploadifyNoFlashDiv" runat="server" class="infoBoxDiv" style="display: block;">
<div id="uploadifyNoFlashLoadingDiv" style="display:block">
<img src="../images/uploading.gif" alt="Loading ..." /> Loading. Please wait a moment ...
</div>
<div id="uploadifyNoFlashFinalDiv" style="display:none;">
<p style="font-weight: bold; background-color: Red; color: Black;">
Flash is not installed or is not enabled</p>
<p>
File upload requires Flash to be installed and enabled.<br />
Click <a href="http://get2.adobe.com/flashplayer/" target="_blank">here</a> to install<br />
You will need to <a href="javascript:window.location.href=window.location.href">refresh</a>
the page when installation is completed
</p>
</div>
</div>
<div id="uploadifyHasFlashDiv" runat="server" style="display: none;">
<asp:FileUpload ID="ImageFileUpload" runat="server" />
</div>
</div>
<script language="javascript" type="text/javascript">
// If the NoFlashDiv is still visible then hide the loading gif and show the info box
// Otherwise leave alone and the Uploadify script will do its thing
$(document).ready(function() {
if ($('[id$="uploadifyNoFlashDiv"]').css('display') == 'block')
{
$('[id$="uploadifyNoFlashLoadingDiv"]').css('display','none');
$('[id$="uploadifyNoFlashFinalDiv"]').css('display','block');
}
});
</script>
Pregunta interesante. La "degradación agraciada" no está en la lista de características de Uploadify, así que puede que no haya forma de hacerlo (aparte de comprobar Flash y mostrar una entrada normal) –
Para actualizar esta pregunta: A partir de la primavera de 2012, ahora hay un HTML5 comercial versión de Uploadify: Uploadifive. Estoy cargando Uploadifive en body onload() y ocultando la versión flash, luego, si el texto en el botón de carga no cambia, configuro style: "display: none;" a la versión HTML5 y cambiar a la versión flash. –
, de nuevo, sería el problema en IE sin compatibilidad con html5 ... – zaw