我正在尝试使用 PHP 提交表单。我试图从我的表单中的两个文件输入中获取值,但是当我尝试使用 PHP 代码对它们进行索引时,我一直收到错误。
错误我得到了:
Undefined index: profile-pic in C:\xampp\htdocs\shareitme\form-test.php on line 5
Undefined index: cover-pic in C:\xampp\htdocs\shareitme\form-test.php on line 6
我的代码:
<?php
if (isset($_POST['submit'])) {
$profile_pic= time() . $_FILES['profile-pic']['name'];
$cover_pic= time() . $_FILES['cover-pic']['name'];
}
?>
<form id="editprofile" method="post" action="<?php echo $_SERVER['PHP_SELF']
?>">
<input type="hidden" name="MAX_FILE_SIZE" value="5000000"/>
<input type="file" name="profile-pic"/>
<input type="file" name="cover-pic"/>
<input type="submit" name="submit" value="submit"/>
</form>
我知道我的名称是正确的,我做错了什么?
答案 0 :(得分:2)
要在表单中上传包含enctype="multipart/form-data"
的文件,请执行以下操作:
<form id="editprofile" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']
?>">
enctype属性指定在将表单数据提交到服务器时应如何编码表单数据。
有关表单的更多信息:http://www.w3schools.com/tags/att_form_enctype.asp
要重命名已上传的文件,最好将其上传到move_uploaded_file的服务器,然后重命名。
答案 1 :(得分:0)
尝试:
<?php
if (isset($_REQUEST['go']) && $_REQUEST['go'] == "1") {
$profile_pic= time() . $_FILES['profile-pic']['name'];
$cover_pic= time() . $_FILES['cover-pic']['name'];
}
?>
<form id="editprofile" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="MAX_FILE_SIZE" value="5000000"/>
<input type="file" name="profile-pic"/>
<input type="file" name="cover-pic"/>
<input type=hidden name="go" value="1">
<input type="submit" name="submit" value="submit"/>
</form>
答案 2 :(得分:0)
在表单标记中使用enctype="multipart/form-data"
无论何时想要发布二进制数据,都必须设置此enctype
属性。
答案 3 :(得分:0)
1)如果您使用的是文件类型,则表单属性应为enctype="multipart/form-data"
。
<form id="editprofile" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
2)在使用您的帖子值之前,最好先检查一下是否已设置。
$pic=isset($_FILES['profile-pic']['name']) ? $_FILES['profile-pic']['name'] : '';
答案 4 :(得分:0)
每当您想要上传文件时。您需要添加enctype
来自。
`enctype="multipart/form-data"'
这应该有效
<form id="editprofile" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']
?>">
答案 5 :(得分:0)
如果我没弄错的话,你在这里尝试做什么,就是在你的服务器上传图像吧?您只需使用第三方上传工具即可。我建议使用AjaxUpload,因为它基于AJAX并且非常容易实现。 为简单起见,我在一个图像上应用上传功能。您只需将其放入函数中并重复使用即可。
<p id="showMsg"></p>
<input type="file" name="profile-pic" id="profilePic" />
JQuery的:
$("#profilePic").ajaxUpload({
url : $_SERVER['PHP_SELF'],
name: "file",
onSubmit: function() {
$('#showMsg').html('Uploading ... ');
},
onComplete: function(result) {
$('#showMsg').html('File uploaded with result' + result);
}
});
PHP:
<?php
if (isset($_FILES))
{
$file = $_FILES['file'];
move_uploaded_file($_FILES["file"]["tmp_name"], 'upload_dir/' . $_FILES["file"]["name"]); // This function will upload the image to 'upload_dir' folder. You can modify it as per your requirements.
}
?>