我正在使用CodeIgniter编写图像上传表单。我以前也有类似的代码可以用于不同的网站。目前,用于接收多部分/表单数据映像的代码正在无声地失败。在配置服务器/脚本时,我收到了错误,例如不正确的文件路径、不合理的mime类型,但现在我一无所获。
下面的代码返回:"ABC",在"D"之前失败,没有错误。
如果我将"photo_filedata"更改为"photo_filedata2",我会得到一个更有用的错误:"You dong You dio select a file to upload"
我完全无法调试它,因为我根本没有从服务器收到任何错误。
有人知道可能发生什么吗?
服务器:WAMP,在Windows7上运行。有一个现有的项目可以毫无问题地上传文件。
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));
}
$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);
}
}
}
试试这个!
您将maxwidth和maxheight设为零可能就是问题所在,请检查它。
(从注释中重新排序):system/application/config/mimes.php中有一个打字错误/错误,导致is_allowed_filetype()方法在do_upload()中失败;
Erronous:
...
'gif' => array('image/gif', 'application/octet-stream'),
'jpeg' => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'jpg' => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'jpe' => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'png' => array('image/png', 'image/x-png', 'application/octet-stream'
);
//缺少)用于最终输入。–约翰·比奇(又名Markavian)
CodeIgniter配置文件中的任何错误似乎都会以静默方式失败,因此不会报告任何进一步的错误。通过调试内部CI方法以查明哪一行失败,发现了问题。