Bom dia. Eu estou tentando encontrar uma maneira de evitar que após o usuário selecionar, se selecionar, uma imagem, essa seja substituída apenas por outra selecionada. Porém quando o usuário cancela a seleção, o input file remove o arquivo se já foi selecionado anteriormente.
Essa é a estrutura que estou usando HTML
form action="#" method="post" name="formulario" id="formulario" enctype="multipart/form-data"
input type="file" name="file_name[]"
br
input type="file" name="file_name[]"
br
button enviar /button
/form
JS PURO
Peguei esse script em um post aqui do stackoverflow e adaptei
script type="text/javascript"
let formulario = document.querySelector("#formulario");
formulario.addEventListener("change", (e)=>{
e.preventDefault();
var file = e.target.files[0];
if (e.target.files.length === 1 && e.target.files !== undefined && e.target.files !== null
&& file.type.match('image.*'))
{
console.log("if okay");
}
else
{
//preciso entender o que devo fazer aqui para verificar se há arquivo no DOM desse
target caso, o usuário cancele a seleção, para evitar que se há um arquivo no DOM
esse permaneça.
console.log(file); //CASO O USUÁRIO CANSELA A SELEÇÃO, RETORNA undefined
}
});
/script
O if está correto, porém o que falta é o que fazer no else. Agradeço desde já.
Tô tentando fazer um pre-loading, mas não consigo de jeito algum.
Quero mostrar uma animação enquanto a página é carregada e depois de caregada, esconder a animação e mostrar conteúdo.
class Data {
public static function ExibirTempoDecorrido($date)
{
if(empty($date))
{
return "Informe a data";
}
$periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
$duracao = array("60","60","24","7","4.35","12","10");
$agora = time();
$unix_data = strtotime($date);
// check validity of date
if(empty($unix_data))
{
return "Bad date";
}
// is it future date or past date
if($agora > $unix_data)
{
$diferenca = $agora - $unix_data;
$tempo = "atrás";
}
else
{
$diferenca = $unix_data - $agora;
$tempo = "agora";
}
for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++)
{
$diferenca /= $duracao[$j];
}
$diferenca = round($diferenca);
if($diferenca != 1)
{
$periodos[$j].= "s";
}
return "$diferenca $periodos[$j] {$tempo}";
}
}
Funciona redondinho se o valor retornado for de algumas horas, mas...
Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
if($diferenca != 1)
{
$periodos[$j].= "s";
}