您没有选择要上传的文件。 PHP 代码点火器
Posted
技术标签:
【中文标题】您没有选择要上传的文件。 PHP 代码点火器【英文标题】:You did not select a file to upload. PHP Code Igniter 【发布时间】:2013-12-05 14:25:34 【问题描述】:我正在尝试实现发布功能并希望从 php 视图中选择消息和图像。我的消息功能运行良好。但是在图片上传时我收到一个错误You did not select a file to upload
。这是我的控制器功能
function post_func()
session_start();
echo $post_message=$_POST['post'];
echo $share_with=$_POST['share_with'];
echo $image=$_POST['image'];
if($image==null)
echo "<br/>no image<br/>";
else
////////////////////////////////////////////////////////////////////////////////////////
$config['upload_path'] = './application/css';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
$this->upload->initialize($config);
if ( ! $this->upload->do_upload())
$error = array('error' => $this->upload->display_errors());
echo "<br/>";
echo $this->upload->display_errors();
echo "<br/> image error<br/>";
else
echo "<br/> reached <br/>";
session_start();
$this->membership_model->insert_images($this->upload->data(),$email);
$data = array('upload_data' => $this->upload->data());
echo "<br/ problem<br/>";
////////////////////////////////////////////////////////////////////////////////////////
$public;
if($share_with=="public")
echo "1";
$public=true;
else
echo "0";
$public=false;
echo "-----------------------------<br/>";
echo $user=$this->session->userdata('user_identification');
$data = array
(
'userid'=> $user,
'public' => $public,
'message' => $post_message,
'picname' => "None"
);
$this->load->model('membership_model');
$this->membership_model->add_message($data);
echo "</br>";
echo $user=$this->session->userdata('user_identification');
这是我的看法。
<?php echo form_open('search/post_func');?>
<!--<form id="loginForm" action="../search/post_func" method="post" enctype="multipart/form-data" >-->
<div id="your_post">
<div id="post_image">
<img id ="post_img" src="<?php echo $this->config->item('base_url'); ?><?php echo '/application/css/'. $img ?>"/>
</div>
<textarea name="post" rows="5" cols="30" placeholder="Share an update..." id="post_text" rows="2" value=""></textarea>
//other view items
<?php
echo form_close();
?>
请帮帮我
【问题讨论】:
先看这里:ellislab.com/codeigniter%20/user-guide/libraries/… 您的表单必须是多部分的。 @Ts8060 我已经添加了<?php echo form_open_multipart('search/post_func');?>
,但它仍然给出了错误。
【参考方案1】:
变化:
$this->upload->do_upload()
到这里:
$this->upload->do_upload('my_file_input_name')
它会工作的! :)
【讨论】:
我像这样改变了,但是得到了You did not select a file to upload.
,我在接受的答案中上传了我的问题,你会看到吗?
@151291 如果您的表单正在发送,请在 firefox/chrome 控制台(在“网络”选项卡中)检查。
是的,它正在发送这样的 POST 并重复。 move_uploaded_file($_FILES['file']['tmp_name'],$config['upload_path'].$basename);
工作但 $this->upload->do_upload('test')
不工作。
你必须将'test'替换为html中文件元素的名称,让我知道。
确定了!但想知道为什么?我之前使用过空参数【参考方案2】:
变化:
<?php echo form_open_multipart('search/post_func');?>
【讨论】:
我已经在这段代码''中定义了我的输入名称image
,即使它说@987654323 @@尼尔兹
我已经添加了<?php echo form_open_multipart('search/post_func');?>
,但它仍然给出了错误。
$this->upload->do_upload()
需要 field_name
,您没有提供,这意味着默认情况下它将采用 user_file
。您的表单中有<input type="file" name="user_file">
吗?另一件事是你不要像echo $image=$_POST['image'];
这样的文件,而是这样做:echo $image=$_FILES['image'];
。希望对您有所帮助。
上帝保佑你,亲爱的
每次我都会忘记这一点。我已经访问过这个问题超过 3 次了...【参考方案3】:
您的表单类型应为“多部分” 将您的表单标签更改为:
<?php echo form_open_multipart('search/post_func');?>
【讨论】:
我在接受的答案中添加了我的问题,你能帮帮我吗?【参考方案4】:enctype='multipart/form-data'
你应该把之前的属性放在表单标签中
$this->upload->do_upload('file_name')
将输入标记文件名传递到控制器中的前一行
<input type="file" name ="file_name" >
【讨论】:
【参考方案5】:示例代码是
$config['upload_path'] = FCPATH.'upload/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload');
$this->upload->initialize($config);
if ( ! $this->upload-> do_upload('userfile'))
$errors = $this->upload->display_errors();
$this->session->set_flashdata('error', $errors);
redirect('ur_link');
else
$data = array('upload_data' => $this->upload->data());
$fullpath= $data['upload_data']['full_path'];
$file_name = $data['upload_data']['file_name'];
【讨论】:
$this->upload-> do_upload('userfile') // userfile 是你的文件名【参考方案6】:这样做:
if(isset($_FILES['profile_pic']['name']) && !empty($_FILES['profile_pic']['name']))
$config['upload_path']= './assets/img/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 10000;
$config['max_width'] = 10000;
$config['max_height'] = 10000;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('profile_pic'))
$error = array('error' => $this->upload->display_errors());
print_r($error);
exit;
else
$data = array('upload_data' => $this->upload->data());
if(!empty($data))
$img1 = $data['upload_data']['file_name'];
$insert_data['profile_pic'] = $img1;
【讨论】:
这个看起来主要是代码你能补充一些信息吗【参考方案7】:我发现发生此问题的另一个原因。如果您在加载库后忘记初始化:
$this->load->library('upload', $config);
$this->upload->initialize($config); //Make this line must be here.
希望对你有所帮助。
【讨论】:
我尝试了这里的所有答案,但仍然出现You did not select a file to upload.
之类的错误,但$_FILES['file']['name']
工作正常。
您为什么不发布自己的问题,以便我们找到解决您问题的方法。
我的问题是一样的,但错误是不同的......好吧,如果我没有得到我会发布我的问题..move_uploaded_file($_FILES['file']['tmp_name'],$config['upload_path'].$basename);
工作但do_upload
不工作。【参考方案8】:
所以请注意,我正在执行 mysql 上传导入,并且收到“您没有选择要上传的文件”消息。原来我的导入 sql 文件有额外的列导致失败并返回此错误消息。
【讨论】:
以上是关于您没有选择要上传的文件。 PHP 代码点火器的主要内容,如果未能解决你的问题,请参考以下文章