我尝试使用codeigniter的上传库在我的网站上添加文件上传功能。
这是我的观点文件(display.php):
<html>
<body>
<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="filename" />
<input type="submit" name="submit" id="submit" value="submit"/>
</form>
</body>
</html>
以及控制器:
public function testupload()
{
if ( ! empty($_FILES))
{
echo 'start upload';
$config['upload_path'] = './assets/img/tempfile/';
$this->load->library('upload');
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('filename'))
{
echo 'error!';
}
else
{
echo 'success!';
}
echo 'end upload';
}
$this->load->view('display', $this->data);
}
但代码似乎在$this->upload->initialize($config);
文件未上传后停止,并且根本没有消息。只显示'start upload'
消息; echo 'success'
,echo 'error'
和echo 'end upload'
未显示。
为什么?任何人都可以帮助我吗?
答案 0 :(得分:0)
试试这样....
public function testupload()
{
if ( ! empty($_FILES))
{
echo 'start upload';
$config['upload_path'] = './assets/img/tempfile/';
$this->load->library('upload',$config);
if ( ! $this->upload->do_upload('filename'))
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('display', $error); //loads the view display.php with error
}
else
{
echo 'success!';
}
echo 'end upload';
$data = array('upload_data' => $this->upload->data());
$this->load->view('display', $data); //loads view display.php with data
}
}
答案 1 :(得分:0)
从
改变$config['upload_path'] = './assets/img/tempfile/';
到
$config['upload_path'] = 'assets/img/tempfile/';
答案 2 :(得分:0)
我检查这段代码这项工作是否完美 只需添加此行
$config['allowed_types'] = 'png|gif|jpg|jpeg';
$config['max_size'] = '7000';
之后
$config['upload_path'] = './assets/img/tempfile/';
或者您也可以在视图页面
中进行设置action="<?php echo base_url('YourController/testupload');?>"
答案 3 :(得分:0)
这是由于php服务器版本和它的选择。
1)。转到cpanel帐户
2)。点击软件部分中的“选择php版本”。
3)。在php选项中输入“fileinfo”chexbox并保存。
现在您可以完美地上传文件。
答案 4 :(得分:0)
聚会晚会,但这也许可以帮助遇到同样问题的人。请尝试以下方法:
观看次数:
<?php echo form_open_multipart('test/upload');?>
<input type="file" name="photo">
<?php echo form_close();?>
控制器:
class Test extends CI_Controller {
function upload() {
$config = array(
'upload_path' => './assets/upload/',
'allowed_types'=> 'gif|jpg|png',
'encrypt_name' => TRUE // Optional, you can add more options as need
);
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('photo')) {
echo '<pre>';
print_r($this->upload->display_errors());
exit();
} else {
echo '<pre>';
print_r($this->upload->data());
exit();
}
}
}
在视图内部,我建议使用此功能form_open_multipart('ctrl/method')
,但如果您更喜欢使用HTML5表单,请确保正确修改表单中的属性。
<form action="<?=site_url('ctrl/method')?>" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input type="file" name="photo">
</form>
$config['..']
中的更多首选项可以在文档CodeIgniter https://codeigniter.com/user_guide/libraries/file_uploading.html中找到
答案 5 :(得分:0)
与所述问题相同。我已使用以下方法修复了该问题:打开文件system / libraries / Upload.php,转到函数validate_upload_path(),然后在该函数的最后一行添加命令return TRUE;
。保存并重试。
答案 6 :(得分:0)
使用此图像上载:
$valid_extensions = array('jpeg', 'jpg', 'png');
if ($_FILES['filename']['error'] == 0) {
$img = $_FILES['filename']['name'];
$tmp = $_FILES['filename']['tmp_name'];
$ext = strtolower(pathinfo($img, PATHINFO_EXTENSION));
if (in_array($ext, $valid_extensions)) {
$path = "./assets/img/tempfile/" . strtolower($img);
if (move_uploaded_file($tmp, $path)) {
$_POST['filename'] = $path;
}
}
}
使用插入查询插入文件:
$this->db->insert('table_name', $_POST);
答案 7 :(得分:0)
在macOS上也有同样的问题。看来,如果您不是笔记本电脑/个人电脑的“主要”用户,则默认权限为“只读”。您必须将其更改为“读和写”。
答案 8 :(得分:0)
在配置中添加允许的文件类型参数
$config['allowed_types'] = 'gif|jpg|png';
答案 9 :(得分:0)
您的代码缺少以下内容,
$this->load->library('upload',$config);
通过重写上面的代码来纠正它。