Não prestei muita atenção ao upload de arquivos antes. Ontem fiz um simples, mas descobri que havia alguns problemas.
O código do programa no início é o seguinte:
uploadimg.php
<?php
//Determine se é uma interface de upload ou uma interface de implementação. Se for uma interface de upload, exiba a seguinte página HTML.
if(!$_POST['UploadAction']):
?>
<html>
<cabeça>
<título></título>
</head>
<corpo><tabela><centro>
<form enctype="multipart/form-data" name="SubmitForm" action="" método="post">
<input type="hidden" name="UploadAction" value="1">
<tr><td><input name="UploadFile" type="file" size="30"></td></tr>
<tr><td><input type="submit" name="submit" value="Upload"></td>
<td><input type="reset" name="reset" value="Reset"></td></tr>
</form>
</center></table></body>
</html>
<?php
//Se for uma página de implementação, exiba a seguinte página HTML e ative o script PHP
senão:
?>
<html>
<cabeça>
<título></título>
</head>
<corpo>
<?php
//www.knowsky.com inicializa o status de UploadAction
$UploadAction=0;
$UploadFile=$_POST['UploadFile'];
if(($UploadFile!="none") && ($UploadFile!=""))
{
$UploadPath=$_SERVER['DOCUMENT_ROOT'].."\"
;
{
echo "O diretório $UploadPath não é gravável!";
}
outro
{
echo "O diretório $UploadPath é gravável!";
}
$NomeArquivo=$Nome_Arquivo_Upload;
if($Tamanho_Arquivo_Upload<1024)
{
$FileSize=(string)$UploadFile_size."byte";
}
elseif($UploadFile_size<(1024*1024))
{
$FileSize=number_format((double)($UploadFile_size/1024),1)."KB";
}
outro
{
$FileSize=number_format((double)($UploadFile_size/(1024*1024)),1)."KB";
}
if(!file_exists($UploadPath.$FileName))
{
if(move_uploaded_file($UploadFile,$UploadPath.$FileName))
{
echo "Arquivo $UploadFile_name ($FileSize) enviado com sucesso!";
}
outro
{
echo "Falha no upload do arquivo $UploadFile_name ($FileSize)!";
}
desvincular($UploadPath.$NomeArquivo);
}
outro
{
echo "O arquivo $UploadFile_name já existe!";
}
}
outro
{
echo "Você não selecionou nenhum arquivo para upload ou o arquivo enviado excede $MAX_FILE_SIZE!";
}
?>
<br><a href="uploadimg.php">Retornar</a>
</body>
</html>
<?php
endif
?>
Depois de executá-lo, descobri que o upload não teve nenhum efeito e não consegui nem entrar na página de implementação. Depois de pesquisar e perguntar, descobri que $_FILES é necessário para obter o arquivo carregado,
então fiz algumas alterações:
$UploadFile=$_FILES['UploadFile']['tmp_name'];
$UploadFile_size=$_FILES['UploadFile']['tamanho'];
$UploadFile_name=$_FILES['UploadFile']['nome'];
$FileName=strtolower($UploadFile_name);
Achei que já estaria feito, mas apareceu uma mensagem de erro:
Aviso: move_uploaded_file(F:Serverwww): falha ao abrir stream: Permissão negada em F:Serverwwweooolfinishuploadimg.php na linha 76
Aviso: move_uploaded_file(): Não é possível mover 'E:WINDOWSTEMPphp34.tmp' para 'F:\Server\www' em F:Serverwwweooolfinishuploadimg.php na linha 76
Falha no upload do arquivo *****(****bytes)!
E eu estava depurando no sistema WIN, então não deveria haver um problema de permissão de arquivo. Eu olhei, olhei e pensei sobre isso, mas ainda não consegui descobrir. Postei mensagens no Lao Lao e no Joy para obter ajuda. mas não obtive a resposta correta. Um simples upload de arquivo demorou mais de um dia e ainda não consegui, o que me deixou muito frustrado. Não consegui encontrar erros semelhantes aos meus na Internet.
No final, não tive escolha a não ser pensar por que consegui fazer upload de anexos com êxito ao depurar com o sablog. Portanto, examinei cuidadosamente o código original para enviar o anexo para o sablog e fiz as seguintes alterações com base no código:
function getextension($nome do arquivo) {
return substr(strrchr($nome do arquivo, "."), 1);
}
$extension=getextension($FileName);
if(move_uploaded_file($UploadFile,$UploadPath."temp.".$extension))
//unlink($UploadFile);
desvincular($UploadPath."temp.".$extensão);
Os resultados foram recebidos imediatamente e o upload foi bem-sucedido!
Eu uso unlink($UploadPath."temp.".$extension); aqui para excluir imediatamente os arquivos carregados no espaço e economizar espaço.