diogocs Posted June 20, 2016 at 02:02 PM Report #597312 Posted June 20, 2016 at 02:02 PM Olá a todos, Estou a tentar criar um form que possibilite o envio de várias imagens para uma pasta mas estou a ter dificuldades. Deixo abaixo o código: index.php: <form name="nova_fotografia" id="nova_fotografia" method="post" action="teste-foto-ok.php" enctype="multipart/form-data"> <input id='fotografia' name="fotografia[]" type="file" multiple="multiple" /> <input type="submit"> </form> teste-foto-ok.php: <?php $fotografia = $_FILES['fotografia']['name']; foreach ($fotografia as $foto) { $caminho = "images/fotografias/".$foto; } move_uploaded_file($_FILES['fotografia']['tmp_name'],$caminho); ?> Devolve o seguinte erro: ( ! ) Warning: move_uploaded_file() expects parameter 1 to be string, array given ...
HappyHippyHippo Posted June 20, 2016 at 03:17 PM Report #597318 Posted June 20, 2016 at 03:17 PM identa o teu próprio código e vê onde estás a chamar a função move_uploaded_file IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
tiago.f Posted June 20, 2016 at 03:33 PM Report #597319 Posted June 20, 2016 at 03:33 PM (edited) $_FILES['fotografia']['tmp_name'][X] em que X vai de 0 a count($_FILES['fotografia']['tmp_name']) EDIT: e claro, o comentário do HHH acima... Edited June 20, 2016 at 03:35 PM by tiago.f
diogocs Posted June 21, 2016 at 12:34 PM Author Report #597332 Posted June 21, 2016 at 12:34 PM Obrigado aos dois. Referem-se a colocar da seguinte forma? (Já tinha testado assim e não resultou..) <?php $fotografia = $_FILES['fotografia']['name']; foreach ($fotografia as $foto) { $caminho = "images/fotografias/".$foto; move_uploaded_file($_FILES['fotografia']['tmp_name'],$caminho); } ?> tiago.f Podes explicar-me pf como faço para atribuir esses valores a variavel "x"?
tiago.f Posted June 21, 2016 at 02:07 PM Report #597337 Posted June 21, 2016 at 02:07 PM A variável $_FILES['fotografia']['tmp_name'] é um array, logo terás que iterar cada posição de modo a ires buscar cada uma das imagens que o utilizador escolheu. Como te disse o tal X vai de 0 a count($_FILES['fotografia']['tmp_name']). Por isso é só criares um ciclo para leres cada 'tmp_name'
Solution diogocs Posted June 21, 2016 at 03:17 PM Author Solution Report #597340 Posted June 21, 2016 at 03:17 PM Obrigado mais uma vez pela resposta. Fiz mais algumas pesquisas e tenho neste momento: EDIT: Após alguma pesquisa e testes fiz da seguinte forma: $total = count($_FILES['fotografia']['name']); for($i=0; $i<$total; $i++) { $tmpFilePath = $_FILES['fotografia']['tmp_name'][$i]; if ($tmpFilePath != ""){ $newFilePath = "./images/fotografias/" . $_FILES['fotografia']['name'][$i]; if(move_uploaded_file($tmpFilePath, $newFilePath)) { } } } O unico problema é que ele funciona perfeitamente até 5 fotografias.. se inserir 6 devolve o erro: "Undefined index: fotografia" - nesta linha: $total = count($_FILES['fotografia']['name']);
tiago.f Posted June 21, 2016 at 05:51 PM Report #597348 Posted June 21, 2016 at 05:51 PM Assumindo que está tudo bem com as fotos/ficheiros em si, vê se não estás a atingir o limite de tamanho permitido para o upload. - vê do lado do browser: há um input hidden que podes definir para alterar isto -> Google - vê do lado do php -> php.ini
diogocs Posted June 22, 2016 at 12:47 PM Author Report #597366 Posted June 22, 2016 at 12:47 PM Assumindo que está tudo bem com as fotos/ficheiros em si, vê se não estás a atingir o limite de tamanho permitido para o upload. - vê do lado do browser: há um input hidden que podes definir para alterar isto -> Google - vê do lado do php -> php.ini Era precisamente o filzesize do php.ini Alterei-o mas esqueci-me de reiniciar o wamp e os valor não eram assumidos. Entretanto utilizei phpinfo(); e reparei que tinha os valores antigos. Resolvido 😄 Obrigado pelo teu apoio 1 Report
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now