How to replace a parameter of a PHP function with a file you will receive from a form?

Asked

Viewed 270 times

0

It’s the following guys, I have this form that sends a file to the server:

<!DOCTYPE html>
<html>
<head>
    <title>Enviando arquivos</title>
</head>
<body>

    <!-- O tipo de encoding de dados, enctype, DEVE ser especificado abaixo      -->
    <form enctype="multipart/form-data" action="upload.php" method="POST">

        <!-- MAX_FILE_SIZE deve preceder o campo input -->
        <input type="hidden" name="MAX_FILE_SIZE" value="4194304" />

        <!-- O Nome do elemento input determina o nome da array $_FILES -->
        Enviar esse arquivo: <input name="arquivoEnviado" type="file" />
        <input type="submit" value="Enviar arquivo" />

    </form>

    <br />



</body>

And the one who uploads the file:

 <?php

/* Insira aqui a pasta que deseja salvar o arquivo */
$uploaddir = './uploads/';

$uploadfile = $uploaddir . $_FILES['arquivoEnviado']['name'];

if (move_uploaded_file($_FILES['arquivoEnviado']['tmp_name'], $uploadfile)) {
    echo "Arquivo Enviado <br />" . $_FILES['arquivoEnviado']['name'] . "<br />" .
    $_FILES['arquivoEnviado']['size'] . $_FILES['arquivoEnviado']['type'];
} else {
    if ($_FILES['arquivoEnviado']['error'] == UPLOAD_ERR_INI_SIZE) {

        echo "Tamanho excedido.";
    };
}
?>

And the one that creates the zip file:

/* Inicando o objeto ZipArchive */
$zip = new ZipArchive();

/* O primeiro parâmetro indica o arquivo que será aberto, logo após a 
 * constante ZipArchive::CREATE é utilizada para criar o arquivo 'arquivo.zip'
 * caso ele não exista. */
if ($zip->open('arquivo.zip', ZipArchive::CREATE) === true) {

    /* O método addFile() recebe dois parâmetros, o nome e o nome de destino. */
    $zip->addFile('adwcleaner_6.020.exe', 'ADWCleaner.exe');

    /* O método addFile() recebe dois parâmetros, o nome e local do arquivo e o nome de destino. */
    $zip->addFile('GBPCEF.exe', 'extensao/SoftCaixaEconomica');

    /* O método addFromString() cria um arquivo que contenha Strings, no segundo parâmetro recebe 
     * o conteúdo do arquivo de texto. */
    $zip->addFromString('detalhes.txt', "Programa pre remover adwares");

    $zip->close();

    echo "Arquivo criado com sucesso.";
}

How do I change the argument of the addFile() function by a variable or file that comes from the form? I will have to create another form and in the action call another code . php?

  • Place a text field in the form and redeem the value $_POST!

  • I didn’t quite understand your placement @Virgilionovic

  • In the form create a field <input type="text" name="nome"/> and rescue in PHP with $_POST['nome'];, got it.

  • But I don’t want to create another field, I just want to know how to take a form file and add in the addFile function argument. Got it?

  • I made a simple and functional example

1 answer

1

Thus:

First you need to take the information that comes from the form and pass to a directory with the function move_upload_file:

move_uploaded_file($_FILES['arquivoEnviado']['tmp_name'],
                   'tmp/'.$_FILES['arquivoEnviado']['name']);

in this case I put in a folder within the project tmp/. After you have placed it in a directory use the saved file as the method’s first template addFile as suggested below:

$zip = new ZipArchive();

if ($zip->open('tmp/arquivo.zip', ZipArchive::CREATE) === true) 
{
    $zip->addFile('tmp/'.$_FILES['arquivoEnviado']['name'],
                  $_FILES['arquivoEnviado']['name']);
    $zip->close();
    echo "Arquivo criado com sucesso";
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.