未定义索引上传图片

时间:2014-12-16 01:10:49

标签: php undefined

所以我得到了这个表格,将一些字段和图像上传到数据库:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" >
    <fieldset>

                 <p><label>Nome:</label><input name="nome" type="text" class="text-long" /></p>
                 <p><label>Género:</label><input name="genero" type="text" class="text-long" /></p>
                 <p><label>Ano de Lançamento:</label><input name="ano" type="text" class="text-long" /></p>
                 <p><label>Banda:</label><input name="banda" type="text" class="text-long" /></p>
                 <p><label>Preço:</label><input name="preco" type="text" class="text-long" /></p>
                 <p><label>Imagem:</label><input name="arquivo" type="file" value="" /></p>

        <input type="submit" name="enviar" value="Inserir Album" >
    </fieldset>

然后在fieldset之后我有php代码上传图片并检查字段:

<?php

include('ligacao.php');

include("resize-class.php");



if(isset($_POST['enviar']))

{ //START IF



$nomealbum = $_POST['nome'];

$genero = $_POST['genero'];

$ano = $_POST['ano'];

$banda = $_POST['banda'];

$preco = $_POST['preco'];

//o nome original do arquivo no computador do utilizador

$arqName = $_FILES['arquivo']['name'];

  //o tipo mime do arquivo

$arqType = $_FILES['arquivo']['type'];

   //o tamanho do arquivo

$arqSize = $_FILES['arquivo']['size'];

//o nome temporario do arquivo com que foi guardado no servidor

$arqTemp = $_FILES['arquivo']['tmp_name'];

 //o codigo de erro associado a este upload de arquivo

$arqError = $_FILES['arquivo']['error'];

 //lista de tipos de arquivos permidos

$tiposPermitidos = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png');

//tamanho maximo

$tamanhoPermitido = 6024 * 3000;



if (empty($nomealbum) {

$noname = '<span  class="error">Insira um nome para album!</span></br>';

echo $noname;

} 



if (empty($genero)) {

$nogenero = '<span  class="error">Insira um genero para o album!</span></br>';

echo $nogenero;

}

if (empty($ano)) {

$noano = '<span  class="error">Insira uma ano para o album!</span></br>';

echo $noano;

} 

if (empty($banda)) {

$nobanda = '<span  class="error">Insira uma banda para o album!</span></br>';

echo $nobanda;

} 

if (empty($preco)) {

$preco = '<span  class="error">Insira uma banda para o album!</span></br>';

echo $nopreco;

} 

if (empty($arqName)) {

$noarqName = '<span  class="error">Insira uma imagem!</span></br>';

echo $noarqName;

}



if ($arqError == 0 && !empty($nomealbum) && !empty($genero) && !empty($ano) && !empty($banda)&& !empty($preco))

{

    //verifica o tipo de arquivo enviado

    if(array_search($arqType, $tiposPermitidos) === false)

    {

    $arqinvalido = '<span class="error">O tipo de arquivo enviado é inválido!</span>';

    echo $arqinvalido;

    }

    //verifica o tamanho do arquivo enviado

    else if ($arqSize > $tamanhoPermitido)

    {

    $arqgrande = '<span class="error">O tamanho do arquivo enviado é maior que o limite!</span>';

    echo $arqgrande;

    }

    else

    {

        $pasta = 'imagens_albuns/';

        //pega a extensao do arquivo enviado

        $extensaoTemp = explode('.',$arqName);

        $extensao = strtolower(end($extensaoTemp));

        //define o nome do arquivo usando um Unix TimesTamp

        $nome = time(). '.' . $extensao;

        $upload = move_uploaded_file($arqTemp, $pasta . $nome);



        if ($upload === true)

        {

        $ficheiro = $pasta.$nome; 

        $resizeObj = new resize($ficheiro); 

        $resizeObj -> resizeImage(800, 600, 'auto');

        $resizeObj -> saveImage("imagens_albuns/$nome", 100);

        $resizethumb = new resize($ficheiro);   

        $resizethumb -> resizeImage(150, 150, 'crop');

        $resizethumb -> saveImage("imagens_albuns/thumbnails/$nome", 100);

        $query = mysql_query("INSERT INTO albuns (nome, genero, ano, banda, preco, arquivo) VALUES ('$nomealbum','$genero','$ano','$banda','$preco','$nome')") or die (mysql_error());

        //se a query existe entao a pagina é redireccionada

        if($query === true)

        {

        $sucesso = '<span  class="yes">Album inserido com sucesso!</span>';

        echo $sucesso;

        }

        }



        else

        {

        $retorno = '<span class="error">Nao foi possivel fazer o upload da imagem!</span>';

        echo $retorno;

        }

    }                         

}



}

?>

我无法让这个工作,因为每次我尝试上传文件,我都会收到此错误:

注意:未定义的索引:第45行的/home/claire/public_html/inseriralbum.php中的arquivo注意:未定义的索引:第49行的/home/claire/public_html/inseriralbum.php中的arquivo注意:未定义的索引:arquivo in /home/claire/public_html/inseriralbum.php第53行注意:未定义的索引:第57行的/home/claire/public_html/inseriralbum.php中的arquivo注意:未定义的索引:arquivo in /home/claire/public_html/inseriralbum.php第61行Insira uma imagem! O tipo de arquivoenviadoéinválido!

我可以“arquivo”未定义,如果它在表单中输入文件的名称?

Here is line 45 to 61

$arqName = $_FILES['arquivo']['name'];

  //o tipo mime do arquivo

$arqType = $_FILES['arquivo']['type'];

   //o tamanho do arquivo

$arqSize = $_FILES['arquivo']['size'];

//o nome temporario do arquivo com que foi guardado no servidor

$arqTemp = $_FILES['arquivo']['tmp_name'];

 //o codigo de erro associado a este upload de arquivo

$arqError = $_FILES['arquivo']['error'];

1 个答案:

答案 0 :(得分:2)

<form>代码需要enctype="multipart/form-data"才能处理文件上传。

因此,当您提交表单时,您可以访问这些$_FILES数据。

并确保您具有适当的权限,以便move_uploaded_file()功能正常工作。

您可以在该特定目标文件夹上使用chmod命令(终端)。