Php Codeigniter do_upload()在“上自动失败”;“成功”;
我正在使用CodeIgniter编写一个图像上传表单。我以前有类似的代码在不同的站点上工作。目前-用于接收多部分/表单数据映像的代码正在无声地失败。在配置服务器/脚本时,我收到了错误,例如不正确的文件路径、禁用mime类型,但现在我什么也得不到 下面的代码返回“ABC”,在“D”之前失败,没有错误 如果我将“photo\u filedata”更改为“photo\u filedata2”,则会出现一个更有用的错误:“xiao xiao您没有选择要上载的文件。” 我完全无法调试它,因为我没有从服务器上得到任何错误 有人知道会发生什么吗 服务器:WAMP,在Windows 7上运行。拥有一个可以毫无问题地上传文件的现有项目Php Codeigniter do_upload()在“上自动失败”;“成功”;,php,image,forms,codeigniter,upload,Php,Image,Forms,Codeigniter,Upload,我正在使用CodeIgniter编写一个图像上传表单。我以前有类似的代码在不同的站点上工作。目前-用于接收多部分/表单数据映像的代码正在无声地失败。在配置服务器/脚本时,我收到了错误,例如不正确的文件路径、禁用mime类型,但现在我什么也得不到 下面的代码返回“ABC”,在“D”之前失败,没有错误 如果我将“photo\u filedata”更改为“photo\u filedata2”,则会出现一个更有用的错误:“xiao xiao您没有选择要上载的文件。” 我完全无法调试它,因为我没有从服务器
function upload_photo()
{
echo "A";
$config['upload_path'] = './images/uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['file_name'] = 'photo_' . substr(md5(time()), 0, 16);
$config['max_size'] = 2000;
$config['max_width'] = 0;
$config['max_height'] = 0;
echo "B";
$this->load->library('upload', $config);
echo "C";
$result = $this->upload->do_upload('photo_filedata');
echo "D";
if (!$result)
{
$error = $this->upload->display_errors();
$data = false;
}
else
{
$error = false;
$data = $this->upload->data();
}
$this->load->view('home-photo-upload', array('error' => $error, 'data' => $data));
}
您将maxwidth和maxheight设置为零可能就是问题所在。请检查它。(从评论中转载):
system/application/config/mimes.php中有一个输入错误/错误,导致is_allowed_filetype()方法在do_upload()中失败 //缺失)以供最终录入约翰·比奇(又名马卡文) CodeIgniter配置文件中的任何错误似乎都会无声地失败,因此不会报告任何进一步的错误。通过调试内部CI方法发现问题,以查明哪一行失败
$config['upload_path'] = 'uploads/category/'.$id.'/';
//echo $file_name;die;
//echo $config['upload_path'];
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '750';
$config['max_width'] = '1920';
$config['max_height'] = '1280';
$this->load->library('upload');
foreach ($_FILES as $key => $value) {
//print_r($key);
if (!empty($key['name'])) {
$this->upload->initialize($config);
if (!$this->upload->do_upload($key)) {
// echo 'test';die;
// rmdir('uploads/category/'.$id);
$errors = $this->upload->display_errors();
flashMsg($errors);
}
}
}
试试这个 不,这在原始代码中运行良好://来自其他项目的工作代码:$config['upload_path']='./images/uploads/$配置['allowed_types']='gif | jpg | png'$配置['max_size']=1024*3$配置['max_width']=0$配置['max_height']=0@John Beech-能否添加
ini\u集(“显示错误”,true)代码>和错误报告(E_ALL)代码>正下方回显“C”“代码>如果有什么发现,请告诉我们?”弗朗索瓦-当然,现在将测试它。我在另一个项目中使用了上述代码,但当我复制回来时,我遇到了相同的问题-因此看起来可能是项目范围内的配置问题。@Francois-仍然没有,从未到达“D”:“echo”C;ini设置(“显示错误”,真);错误报告(E_全部);$result=$this->upload->do_upload('photo_filedata');`回声“D”`@约翰·比奇-你确定文件夹是可写的吗?我在Linux和OSX上使用CodeIgniter,您的代码似乎可以工作。我想到的另一件事是路径应该使用\而不是/。system/application/config/mimes.php中有一个输入错误/错误,导致is_allowed_filetype()方法在do_upload()中失败;错误:'gif'=>数组('image/gif','application/octet stream'),'jpeg'=>数组('image/jpeg','image/pjpeg','application/octet stream'),'jpg'=>数组('image/jpeg','image/pjpeg','application/octet stream'),'jpe'=>数组('image/jpeg','image/pjpeg','application/octet stream'),'png'=>数组('image/png','image/x-png','application/octet stream');//缺少)用于最终输入。
$config['upload_path'] = 'uploads/category/'.$id.'/';
//echo $file_name;die;
//echo $config['upload_path'];
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '750';
$config['max_width'] = '1920';
$config['max_height'] = '1280';
$this->load->library('upload');
foreach ($_FILES as $key => $value) {
//print_r($key);
if (!empty($key['name'])) {
$this->upload->initialize($config);
if (!$this->upload->do_upload($key)) {
// echo 'test';die;
// rmdir('uploads/category/'.$id);
$errors = $this->upload->display_errors();
flashMsg($errors);
}
}
}