2014-12-16 2 views
-1

그래서 일부 필드 및 데이터베이스에 이미지를 업로드하려면이 양식, 가지고 :정의되지 않은 인덱스 업로드 이미지

<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> 

그리고 다음 필드 셋 후 나는 이미지를 업로드하고 필드를 확인하는 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; 

     } 

    }       

} 



} 

?> 

마다 내가 파일을 업로드하려고하기 때문에 나는이 작업을 위선적 인 말투, 난이 오류가 정의되지 않은 인덱스 : /home/claire/public_html/inseriralbum.php에에 arquivo 라인 45 Notice : Undefined index : /home/claire/public_html/inseriralbum.php in line 49 알림 : 정의되지 않은 색인 : /home/claire/public_html/inseriralbum.php 온라인 53 알림 : 정의되지 않은 색인 : arquivo in/home/claire/public_html/inseriralbum.php on line 57 알림 : 정의되지 않은 색인 : /home/claire/public_html/inseriralbum.php 온라인에 저장 61 Inspector imagem! 다른 사람들과 대화를 나눠보세요!

파일에있는 이름이 양식에 입력되어 있으면 "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']; 

답변

2

당신 <form> 태그는 파일 업로드에서 작동하도록 enctype="multipart/form-data"을 가질 필요가있다.

양식을 제출하면 해당 데이터 $_FILES에 액세스 할 수 있습니다.

move_uploaded_file() 기능 작동을 위해서는 적절한 권한이 있어야합니다.

해당 대상 폴더에서 chmod 명령 (터미널)을 사용할 수 있습니다.

+0

경고 : move_uploaded_file (imagens_albuns/1418692561.jpg) : 스트림을 열지 못했습니다 : 169 행의 /home/claire/public_html/inseriralbum.php에서 권한이 거부되었습니다. 경고 : move_uploaded_file() : /home/claire/public_html/inseriralbum.php의 '/ tmp/phpaNaqMB'을 'imagens_albuns/1418692561.jpg'로 옮길 수 없습니다. 온라인으로 169 업로드가 가능합니다. – user2535046

+0

@ user2535046 기본적으로 이미 말하고 있습니다. 파일을 이동할 수있는 권한이 필요합니다. 터미널을 사용하고 목적지 폴더를 설정하고 그것에'chmod 775'를 사용할 수 있습니다. – Ghost

+1

OP에도 closing form 태그가 누락 된 것 같습니다. 또한 "imagens_albuns"의 오타가 될 수 있습니다. OP의 언어 인 "album"이 "albun"이라면 괜찮을 것이라고 말하고 싶지만, OP의 폴더 이름이 "imagens_albums"로되어있을 수도 있습니다.이 요소는 존재하지 않기 때문에 오류 메시지의 추가 요소이자 이유가 될 수 있습니다. –