Carregar vários arquivos em PHP
-
Use a tag
multiple
, um array na tagname
do atributoinput
no formulário e a funçãomove_uploaded_file()
para enviar vários arquivos em PHP - Use o PDO para fazer upload de vários arquivos no banco de dados em PHP
Apresentaremos um método para fazer upload de vários arquivos em PHP especificando o atributo name
da tag input
como um array e usando o atributo multiple
. O valor do atributo enctype
da tag form
é multipart/form-data
. Este método usa mysqli
para a conexão do banco de dados.
Também apresentaremos outro método para fazer upload de vários arquivos em PHP usando o PDO. Faremos upload dos arquivos em uma pasta e, em seguida, faremos upload para um banco de dados. Este método é semelhante ao primeiro método em termos de implementação.
Use a tag multiple
, um array na tag name
do atributo input
no formulário e a função move_uploaded_file()
para enviar vários arquivos em PHP
Podemos especificar o atributo name
da tag input
como um array para fazer upload de vários arquivos. A tag input
usa a palavra-chave multiple
que nos permite selecionar o arquivo múltiplo durante o upload. Podemos escrever a codificação multipart/form-data
para o atributo enctype
para especificar como os dados do formulário devem ser codificados durante o envio do formulário. Podemos usar o mysqli
para conectar ao banco de dados. A função move_uploaded_file()
move o arquivo enviado de um local temporário do servidor para o local desejado. Podemos usar as instruções INSERT
SQL para fazer o upload do arquivo selecionado para o banco de dados.
Por exemplo, defina uma conexão de banco de dados com o objeto mysqli
e atribua o valor à variável $db
. Crie um formulário HTML com o método POST
e o tipo de codificação como multipart/form-data
para fazer o upload dos arquivos. Especifique o atributo type
da tag input
como file
e o atributo name
como file
. Não se esqueça de escrever o atributo multiple
antes de fechar a tag input
. Escreva a tag input
para enviar o formulário.
Verifique se o formulário foi enviado com a função isset()
. Use a função count
para contar o número de arquivos carregados. Pegue o $_FILES['file']['name']
como o parâmetro para a função count
e atribua-o a uma variável $countfiles
. Use o loop for para fazer um loop sobre o arquivo carregado. Dentro do loop, crie uma variável $filename
e atribua-a como $_FILES['file']['name'][$i]
. Crie uma pasta chamada upload
no diretório raiz. Use a função move_upload_file()
para mover o arquivo. Use $_FILES['file']['tmp_name'][$i]
como o primeiro parâmetro que é o arquivo com nome temporário. Use 'upload/'.$filename
como o segundo parâmetro que é o nome do arquivo e o local para armazenar o arquivo enviado.
Execute uma consulta SQL INSERT
para inserir os arquivos no banco de dados. Insira a variável $filename
como id
e name
na tabela fileup
do banco de dados. Use a variável $db
para chamar a função query()
com a variável $sql
como o parâmetro para executar a consulta.
Código de exemplo:
# php 7.*
<?php
if(isset($_POST['submit'])){
$countfiles = count($_FILES['file']['name']);
for($i=0;$i<$countfiles;$i++){
$filename = $_FILES['file']['name'][$i];
$sql = "INSERT INTO fileup(id,name) VALUES ('$filename','$filename')";
$db->query($sql);
move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);
}
}
?>
<form method='post' action='' enctype='multipart/form-data'>
<input type="file" name="file[]" id="file" multiple>
<input type='submit' name='submit' value='Upload'>
</form>
?>
Resultado:
SELECT * FROM `fileup`
id name
1 cfc.jpg
2 hills.jpg
Use o PDO para fazer upload de vários arquivos no banco de dados em PHP
Podemos usar o PDO para fazer upload de vários arquivos em PHP. Podemos usar o objeto PDO para criar uma conexão com o banco de dados. Usamos as instruções preparadas para inserir o arquivo no banco de dados. Este método é diferente do primeiro método apenas em termos de conexão com o banco de dados. Também podemos usar o formulário HTML exato para este método. Demonstramos esse método fazendo upload de dois arquivos jpg na pasta e no banco de dados.
Por exemplo, estabeleça uma conexão de banco de dados PDO usando a palavra-chave new
e atribua-a à variável $conn
. Verifique se o formulário foi enviado com a função isset()
. Conte os arquivos usando a função count
como acima. Em seguida, escreva uma consulta na variável $query
para inserir o id
e o name
. Escreva os marcadores de posição ?
para os valores na consulta. Prepare a consulta usando a função prepare()
e atribua o valor na variável $statement
. Mova cada arquivo para a pasta uplaod
usando a função move_uploaded_file()
. Execute a consulta usando a função execute()
. Forneça um array com $filename
e $target_file
como os parâmetros da função.
No exemplo abaixo, o usuário carrega dois arquivos jpg. Em primeiro lugar, o arquivo é enviado para a pasta upload
e, em seguida, é enviado para o banco de dados. O banco de dados contém a tabela fileup
e as colunas id
e name
. Para aprender mais sobre a função move_uploaded_files()
, consulte o Manual do PHP
Código de exemplo:
#php 7.x
<?php
$conn = new PDO("mysql:host=$server;dbname=$dbname","$username","$password");
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
if(isset($_POST['submit'])){
$countfiles = count($_FILES['file']['name']);
$query = "INSERT INTO fileup (id, name) VALUES(?,?)";
$statement = $conn->prepare($query);
for($i=0;$i<$countfiles;$i++){
$filename = $_FILES['file']['name'][$i];
$target_file = 'upload/'.$filename;
move_uploaded_file($_FILES['file']['tmp_name'][$i],$target_file);
$statement->execute(array($filename,$target_file));
}
}
?>
Resultado:
SELECT * FROM `fileup`
id name
1 upload/cfc.jpg
2+ upload/count.jpg
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn