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

0

It's the following personal, 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 that 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 to a variable or file that comes from the form? Will I have to create another form and in the action call another .php code?

    
asked by anonymous 02.10.2016 / 01:33

1 answer

1

Like this:

First you need to get the information that comes from the form and move to a directory with the < strong> move_upload_file :

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

In this case I put it in a folder inside the tmp/ project. Once you have placed in a directory use the file recorded as the first part of the addFile method 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";
}
    
02.10.2016 / 02:18