所以我得到了这个表格,将一些字段和图像上传到数据库:
<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'];
答案 0 :(得分:2)
您<form>
代码需要enctype="multipart/form-data"
才能处理文件上传。
因此,当您提交表单时,您可以访问这些$_FILES
数据。
并确保您具有适当的权限,以便move_uploaded_file()
功能正常工作。
您可以在该特定目标文件夹上使用chmod
命令(终端)。