upload com php no firefox


Página 1 de 2    1  2 
17-08-2005 por rwar
upload com php no firefox
Alguém consegue fazer uploads com o firefox? No IE o upload é feito tranquilamente.

Estou utilizando isto:
Código:
if(is_uploaded_file($_FILES['arqs']['tmp_name'][$i])) { $conn->insert("csi_anexo", "nome_anexo, endereco_anexo", "'".$_FILES['arqs']['name'][$i]."', '$id_servico-".scstring($_FILES['arqs']['name'][$i])."'", "servico_novo.php"); if($conn->error()<>"") { $error ++; } $id_anexo = getDbValue("select last_value from id_anexo_seq"); $conn->insert("csi_serv_anexo", "id_servico, id_anexo", "$id_servico, $id_anexo", "servico_novo.php"); if($conn->error()<>"") { $error ++; } if ($error == 0) { $up_erros = @move_uploaded_file($_FILES['arqs']['tmp_name'][$i], $up_dir.$id_servico."-".scstring($_FILES['arqs']['name'][$i])); if (!$up_erros) { $error ++; } } }
Alguma dica sobre uploads no firefox?
17-08-2005 por marcos jost
Aqui uso varios serviços que usam upload em php e consigo subir tranquilamente os arquivos aqui do FF.
Deve ser algum problema com seu script....
Ao tentar fazer o upload da alguma mensagem de erro no navegador? Ja verificou os logs do seu servidor web?
17-08-2005 por rwar
Citação:
Postado Originalmente por apolobr
Aqui uso varios serviços que usam upload em php e consigo subir tranquilamente os arquivos aqui do FF.
Deve ser algu...
Todos os possíveis erros foram tratados (pelo menos os que li no manual e em alguns artigos), até porque daria erro no IE também, caso tivesse mesmo erro de script.

Infelizmente não tenho acesso ao servidor web para verificar os logs... :?

Vou continuar tentando. Se tiver mais alguma dica, me forneça por favor... 8)
17-08-2005 por jqueiroz
Qual erro você está percebendo?

Não será erro de configuração de seu firefox? Você usa proxy?

Você tem certeza de que o erro é no script de upload, e não no formulário de envio???
17-08-2005 por rwar
Citação:
Postado Originalmente por jqueiroz
Qual erro você está percebendo?
Nenhum. Simplesmente não ocorre erros. Fui debugando certas partes do script (tanto do que envia como do que trata o arquivo) e percebi que realmente o arquivo não é enviado.

Citação:
Postado Originalmente por jqueiroz
Não será erro de configuração de seu firefox? Você usa proxy?
Não utilizo proxy para a rede interna. Que tipo de configuração causaria algum erro? Gostaria de sugestões (mesmo não sendo relevante ao caso).

Citação:
Postado Originalmente por jqueiroz
Você tem certeza de que o erro é no script de upload, e não no formulário de envio???
Não tenho certeza de mais nada! 8O

Este sistema roda, ao meu ver, em 99,9% de navegadores IE, e para muitos colegas eu nem precisaria me preocupar com isso, mas me importo e quero arrumar esse upload.

Alguém poderia postar algum código que tem em algum script para ver possíveis alterações (garantindo que funciona no FF)?
17-08-2005 por jqueiroz
rwar, de princípio eu imaginei que fosse alguma configuração errada de proxy ou no uso de HTTP 1.1. Mas depois, conforme fui escrevendo, lembrei que pra fazer upload de um arquivo você precisa obrigatoriamente de um formulário. E é comum formulários usarem JavaScript.

Onde quero chegar? É comum haver trechos de código que funcionam no I.E. que não funcionam em outros navegadores.

Seria bom se você verificasse a página do formulário, pra ver se aparece alguma dica.
18-08-2005 por rwar
Citação:
Postado Originalmente por jqueiroz
Seria bom se você verificasse a página do formulário, pra ver se aparece alguma dica.
Realmente, no script que consta o formulário há um botão que, ao clicar, aparece mais uma linha para se escolher o arquivo, e deve ser nisso que o Firefox deve estar se perdendo. Pegar sistema pronto é ff***.
18-08-2005 por Kleber Costa
Roni, minha sugestão seria você usar var_dump($_FILES) pra ver se tá chegando no servidor!!
Reescrevi seu código aqui
Código:
<?php //acrescentar o que falta for($i = 0; $i <= sizeof($_FILES); $i++) { if ($_FILES['arqs']['error'][$i] == 'UPLOAD_ERR_OK') { if (is_uploaded_file($_FILES['arqs']['tmp_name'][$i])) { $conn->insert('csi_anexo', 'nome_anexo, endereco_anexo', '\'' . $_FILES['arqs']['name'][$i] . '\'', '\'' . $id_servico . '-' . scstring($_FILES['arqs']['name'][$i]) . '\'', 'servico_novo.php'); if ($conn->error() != null) { $error++; } $id_anexo = getDbValue("select last_value from id_anexo_seq"); $conn->insert('csi_serv_anexo', 'id_servico, id_anexo', '\'' . $id_servico, $id_anexo . '\'', 'servico_novo.php'); if ($conn->error() != null) { $error++; } if ($error == null) { $up_erros = @move_uploaded_file($_FILES['arqs']['tmp_name'][$i], $up_dir . $id_servico . '-' . scstring($_FILES['arqs']['name'][$i])); if (!$up_erros) { $error ++; } } } else { echo "aí num pode tio =]"; } } else { // outros procedimentos } } ?>
supondo que o html seja marrom meno como esse abaixo
Código:
<html> <head> <title>upload</title> </head> <body> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post"> <input type="file" name="arqs[]"> <input type="file" name="arqs[]"> <input type="submit" value="Envia"> </form> </body> </html>
18-08-2005 por Edivan
Abra o console do Java Script do FF em Ferramentas e verifique se apareceu algum erro, dai voce tira a dúvida se é Java ou não. Foi assim que descobrir que estava usando instruções JavaScrip only-IE no sisteminha aqui da empresa :evil:
18-08-2005 por rwar
Citação:
Postado Originalmente por Kleber Costa
supondo que o html seja marrom meno como esse abaixo
Grande Kleber! O formulário é marrom meno (gostei dessa) assim :mrgreen: :
Código:
<td class="celbranca" valign="middle"> <input type="button" onClick="addFile();" value="Adicionar" class="botao" style="width: 70;">&nbsp;&nbsp;<input type="button" onClick="removeFile();" value="Remover" class="botao" style="width: 70;"> </td>
A função addFile, como mencionei, serve para o usuário controlar o número de arquivos que ele quer fazer upload, no máximo de 10. É aqui que as coisas estão dando treta:
Código:
function addFile() { if (document.form.NumArquivos.value < 10) { var html = ""; var obj = MM_findObj("arq" + document.form.NumArquivos.value); document.form.NumArquivos.value = parseInt(document.form.NumArquivos.value) + 1; html += "<input class='caixatexto' type='file' name='arqs[]' id='Arquivo" + document.form.NumArquivos.value + "'>"; html += "<div id='arq" + document.form.NumArquivos.value + "' name='arq" + document.form.NumArquivos.value + "' style='position:relative; visibility:visible;'>&nbsp;<br>&nbsp;</div>"; obj.innerHTML = html; } }
A propósito, já fiz um var_dump, e não envia nada mesmo...
18-08-2005 por jqueiroz
Citação:
var obj = MM_findObj("arq" + document.form.NumArquivos.value);
Não precisa nem ir muito longe: teu erro tá aqui. No DOM do W3C, vc não pode acessar os atributos dos elementos assim, diretamente.
18-08-2005 por rwar
Citação:
Postado Originalmente por jqueiroz
Não precisa nem ir muito longe: teu erro tá aqui. No DOM do W3C, vc não pode acessar os atributos dos elementos assim...
Putz... javascript realmente não é meu forte. Vou começar a ler as especificações no W3C. Tem algum outro material que possa me basear?

Editado: por que não se pode concatenar (ou acessar, como tu mencionou) os elementos?
18-08-2005 por jqueiroz
Esse meio de acesso é uma característica do Internet Explorer. O correto é usar a função getElementById(nomeDoElemento):

Código:
function addFile() { var numArquivos = document.getElementById("NumArquivos"); if (numArquivos.value < 10) { var html = ""; var obj = MM_findObj("arq" + numArquivos.value); numArquivos.value = parseInt(numArquivos.value) + 1; html += "<input class='caixatexto' type='file' name='arqs[]' id='Arquivo" + numArquivos.value + "'>"; html += "<div id='arq" + numArquivos.value + "' name='arq" + numArquivos.value + "' style='position:relative; visibility:visible;'>&nbsp;<br>&nbsp;</div>"; obj.innerHTML = html; } }
18-08-2005 por rwar
Infelizmente ainda não foi dessa vez...

Coloquei o id="NumArquivos" no elemento e copiei tua função, mas nada ainda... Valeu de qualquer forma, jqueiroz. Pelo menos sabendo desta observação já saberei onde trabalhar. :wink:
18-08-2005 por jqueiroz
rwar, fiz uns pequenos testes aqui e acho que tenho progressos.

1) Em vez de acessar por "document.form.NumArquivos", você pode acessar como "document.forms[0].NumArquivos".

2) Se você pretende usar getElementById("NumArquivos"), tem que haver algum elemento cujo Id seja "NumArquivos", e não o seu "name".
18-08-2005 por rwar
Citação:
Postado Originalmente por jqueiroz
rwar, fiz uns pequenos testes aqui e acho que tenho progressos.

1) Em vez de acessar por "document.form.Num...
Coloquei sim um id no NumArquivos. :mrgreen:

Embora tenha apenas um form no script, vou fazer um teste amanhã cedo desta forma que tu colocou.

Apenas uma pergunta: você executou o script e rodou legal no FF? Até atualizei a versão para a 1.0.6...
19-08-2005 por jqueiroz
Citação:
Apenas uma pergunta: você executou o script e rodou legal no FF? Até atualizei a versão para a 1.0.6...
Bem, eu consegui fazer o efeito de abrir novos campos pra selecionar o arquivo --- o que de certa forma foi um feito, já que você só postou uma pequena parte do código :lol:

Se rodou legal? Acho que sim. :lol: :lol:
19-08-2005 por rwar
Valeu jqueiroz mais uma vez. Larguei de mão mesmo... :x Caso queira verificar mais alguma coisa no script, aqui estão as partes que interessam:
servico_novoform.php (form propriamente dito):
Código:
<script src="js_funcServico.js"></script> <form name="form" action="servico_novo.php" method="post" onSubmit="return Valida(form);" enctype="multipart/form-data"> <input type="submit" name="butSalvar" value="Salvar" onclick="form.ind_situacao.value='0';" class="botao" style="width:65px;"> <input type="hidden" name="NumArquivos" value="0"> <input type="button" onClick="addFile();" value="Adicionar" class="botao" style="width: 70;">&nbsp;&nbsp;<input type="button" onClick="removeFile();" value="Remover" class="botao" style="width: 70;"> </form>
Função para "adicionar" mais uma linha para escolher um arquivo (está no script js_funcServico.js incluído no início):
Código:
function addFile() { if (document.form.NumArquivos.value < 10) { var html = ""; var obj = MM_findObj("arq" + document.form.NumArquivos.value); document.form.NumArquivos.value = parseInt(document.form.NumArquivos.value) + 1; html += "<input class='caixatexto' type='file' name='arqs[]' id='Arquivo" + document.form.NumArquivos.value + "'>"; html += "<div id='arq" + document.form.NumArquivos.value + "' name='arq" + document.form.NumArquivos.value + "' style='position:relative; visibility:visible;'>&nbsp;<br>&nbsp;</div>"; obj.innerHTML = html; } }
servico_novo.php (script para inclusão dos dados):
Código:
for($i=0; $i < $NumArquivos; $i++) { if(is_uploaded_file($_FILES['arqs']['tmp_name'][$i])) { $conn->insert("csi_anexo", "nome_anexo, endereco_anexo", "'".$_FILES['arqs']['name'][$i]."', '$id_servico-".scstring($_FILES['arqs']['name'][$i])."'", "servico_novo.php"); if($conn->error()<>"") { $error ++; } $id_anexo = getDbValue("select last_value from id_anexo_seq"); $conn->insert("csi_serv_anexo", "id_servico, id_anexo", "$id_servico, $id_anexo", "servico_novo.php"); if($conn->error()<>"") { $error ++; } if ($error == 0) { //echo $arqs[$i]." ---- ".$up_dir.$id_servico."-".scstring($arqs_name[$i]); $up_erros = @move_uploaded_file($_FILES['arqs']['tmp_name'][$i], $up_dir.$id_servico."-".scstring($_FILES['arqs']['name'][$i])); if (!$up_erros) { $error ++; } } } }//end for
Creio que está tudo aí - há mais dados no formulário, mas é isto o que interessa. :wink:
19-08-2005 por jqueiroz
No javascript, mude todas as ocorrências de document.form.NumArquivos.value para document.forms[0].NumArquivos.value que deve funcionar.
19-08-2005 por rwar
Citação:
Postado Originalmente por jqueiroz
No javascript, mude todas as ocorrências de document.form.NumArquivos.value para [b]document.[color=red]forms[...
Já havia tentado, mas de qualquer forma substituí e ficou assim:
Código:
function addFile() { if (document.forms[0].NumArquivos.value < 10) { var html = ""; var obj = MM_findObj("arq" + document.forms[0].NumArquivos.value); document.forms[0].NumArquivos.value = parseInt(document.forms[0].NumArquivos.value) + 1; html += "<input class='caixatexto' type='file' name='arqs[]' id='Arquivo" + document.forms[0].NumArquivos.value + "'>"; html += "<div id='arq" + document.forms[0].NumArquivos.value + "' name='arq" + document.forms[0].NumArquivos.value + "' style='position:relative; visibility:visible;'>&nbsp;<br>&nbsp;</div>"; obj.innerHTML = html; } }
Certo? :lol: Vou rir prá não chorar, jqueiroz... Tu conseguiu que os arquivos passassem para o script servico_novo.php (ou outro que tu tenha nomeado)?
 
Guia do Hardware Melhores Tópicos