php - 一些文件使用 POST 方法破坏表单
问题描述
我写在这里是因为我的表格有问题。我的表单有 3 个字段和 1 个上传字段。
我想上传一些文件,打破表格,POST 中没有发送任何数据。我尝试使用“var_dump”读取 $_POST,但他是空的!为什么 ?我的文件是 MP3 和 WAV。Somes 文件正在工作,而 somes 文件破坏了所有数据......
if(isset($_POST['title']) && isset($_POST['desc']) && isset($_POST['emission'])) {
$p_title = htmlspecialchars($_POST['title']);
$p_desc = htmlspecialchars($_POST['desc']);
$p_emission = intval($_POST['emission']);
if(strlen($p_title) >= 1 && $p_emission >= 1) {
// Constantes
define('TARGET', './mp3/'); // Repertoire cible
define('MAX_SIZE', 100000); // Taille max en octets du fichier
// Tableaux de donnees
$tabExt = array('mp3','wav'); // Extensions autorisees
// Variables
$extension = '';
$message = '';
$nomImage = '';
/************************************************************
* Creation du repertoire cible si inexistant
*************************************************************/
if( !is_dir(TARGET) ) {
if( !mkdir(TARGET, 0755) ) {
exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !');
}
}
/************************************************************
* Script d'upload
*************************************************************/
// On verifie si le champ est rempli
if( !empty($_FILES['soundFile']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['soundFile']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['soundFile']['error']) && UPLOAD_ERR_OK === $_FILES['soundFile']['error'])
{
// On renomme le fichier
$nomFichier = md5(uniqid()) .'.'. $extension;
// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['soundFile']['tmp_name'], TARGET.$nomFichier))
{
add_Cartoucheur($p_title,$p_desc,$nomFichier,$p_emission);
$msginfo = 'Upload réussi sous le nom : '.TARGET.$nomFichier;
}
else
{
// Sinon on affiche une erreur systeme
$msginfo = 'Problème lors de l\'upload !';
}
}
else
{
$msginfo = 'Une erreur interne a empêché l\'upload de l\'image ! ';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$msginfo = 'Vous pouvez upload seulement des fichiers MP3 et WAV !';
}
} else {
$msginfo = 'Je vois aucun fichier...';
}
} else {
$msginfo = '<div class="alert alert-warning">Remplissez les champs obligatoires.</div>';
}
}
提前致谢 :)
解决方案
为文件提交添加 enctype = "multipart / form-data" 标签
<form action="/" method="post" enctype="multipart/form-data">
</form>
推荐阅读
- regex - Varnish 4.0 多重匹配
- python - python客户端-服务器中的多个客户端文件传输,无需线程
- mysql - 从 Mysql 迁移到 Cassandra Spring boot
- html - HTML如何在线对齐列?
- cadence - cadence 是否支持 Azure Cosmos DB Cassandra API 而不是 cassandra
- python - Pandas Dataframe 不包含来自 PostgreSQL 查询的列
- django - 嵌入字段:必须是模型的实例:
- spring-boot - 如何处理请求 url-SpringBoot 中的无效/额外特殊字符 & =?
- angular - 将 FormGroup 作为 @Input 传递的 Angular 单元测试
- android - 在 SDK 管理器中找不到 Android 11