Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde, estou comproblemas em Post de arquivo. Segue: Tenho o html:
<form id="formularioCadastroPaciente" enctype="multipart/form-data" action="recebeArq.php" method="post"> <input type="file" id="arq" name="arq" class="filestyle" data-iconName="glyphicon glyphicon-inbox"> php - recebArq.php $caminho = '/temp/arq'. $moveu = move_uploaded_file($_FILES['arq'],$caminho.$_FILES['arq']['name']). if($moveu){ echo 'OK'. } else{ echo 'NAO OK'. } O erro: Warning: move_uploaded_file() expects parameter 1 to be string, array given in C:\xampp\htdocs\projeto\admin\recebeArq.php on line 62show, deu certo era isso mesmo. Obrigado.
Mas agora eu mudei para fazer Post por Ajax/Jquery...
E nao sei como receber no meu recebArq.php o arquivo.
Estou fazendo dessa maneira o ajax:
var dados = $( form ).serialize();
$.ajax({
type: "POST",
url: "/projeto/adminPaciente/recebArq.php",
data: dados,
success: function( data )
{
alert( 'GRavou o arquivo' );
},error: function(XMLHttpRequest, textStatus, errorThrown) {
for(i in XMLHttpRequest) {
if(i!="channel")
document.write(i +" : " + XMLHttpRequest* +"<br>")* }
});
Ele exibe o alert 'Gravou o arquivo', mas na verdade nao fez nada... e nem deu erro...
Você precisa verificar qual resposta veio em
data.
Experimente fazer
alert(data); ou, melhor, aprender a usar o inspetor do navegador, que vai te dar uma resposta mais completa.
Ok, fiz isto, e em "dados" , nao foi serializado "arq" .
Na verdade, eu quero fazer via ajax, para se der tudo ok, retornar um dialog informando que foi tudo OK, se nao der certo , mostrar um dialog informando que nao deu certo o Upload...
Se eu fizer via Form action, nao vai ter como eu retornar...
Primeiro faça sem o JavaScript. Quando estiver tudo funcionando, implemente o AJAX
Tenta assim
var dados = $( form ).serialize();
$.ajax({
url: 'sua_url',
type: 'post',
data: dados,
dataType: 'json',
success: function(callback){
if(callback.success){
// Return message success
}else{
// do anything
}
}
});
Lá no seu arquivo php que recebe os dados você codificar o resultado, por exemplo:
$myVar = ['success' => True];
echo json_encode($myVar);
Posta ai o seu arquivo php que está recebendo as informações do ajax caso não de certo.
Evandro Oliveira:
Fiz sem o jquery/ajax, e estava funcionando.... mas ai quando tentei com o ajax, nao funfou mais....
NerdMonkey:
Realmente nao vai, o .php nao recebe arquivos...
Pesquisei, e vi este topico aqui mesmo no Forum:
http://forum.imasters.com.br/topic/391531-resolvidojquery-enviar-files-via-ajax/
Entao, acredito que ajax nao envia arquivos...
Vou ter que fazer via Form - action..e dando tudo OK, direciono via php mesmo para a mesma pagina....
É possível, sim.
Inclusive há plug-ins do jQuery que fazem isso bem simples
A ideia geral está aqui:
http://abandon.ie/notebook/simple-file-uploads-using-jquery-ajax
Use $_FILES['arq']['tmp_name'] em vez de apenas $_FILES['arq']