2013-12-11 120 views
-1

我正在尝试使用PHP提交表单。我试图从我的表单中获取两个文件输入的值,但是当我尝试使用我的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

我想$ _ POST是空的,所以你的2个变量将永远不会被宣布因为如果条件是假的。里面的代码永远不会运行,所以你的变量是不确定的。 –

+0

只有在提交后才能打开php代码运行 – user3063495

+1

将'enctype =“multipart/form-data”'添加到您的表格 –

回答

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上传到服务器,并比其重命名。

+0

如果不包含[w3schools](http://www.w3fools .COM)。 – Daedalus

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

使用enctype="multipart/form-data"在表单标签。
无论何时您想发布二进制数据,您都必须设置enctype属性。

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'] : ''; 
0

每当你想上传文件。您需要在中添加enctype

`enctype="multipart/form-data"' 

这应该工作

<form id="editprofile" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']  
?>"> 
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. 

} 

?>