为啥我可以为一个用户上传图库图片,但不能为另一个用户上传?
Posted
技术标签:
【中文标题】为啥我可以为一个用户上传图库图片,但不能为另一个用户上传?【英文标题】:How come I can upload gallery images for one user, but not another?为什么我可以为一个用户上传图库图片,但不能为另一个用户上传? 【发布时间】:2012-12-09 19:49:09 【问题描述】:我正在我的网站上创建一个画廊,并创建了几个测试帐户以确保它适用于每个帐户。但我似乎只能为一个用户上传任何图像到屏幕和图库数据库,而不是其他任何用户。为什么会这样 - 每个用户都有自己的会话,所以我很困惑。请看一下我的代码。我的想法是我的模型中的 putGalleryImage 函数有问题,但我没有看到任何真正突出的东西。我认为它也可能在我的上传函数的 else 语句中,用于上传图像时,但同样,我没有任何问题,因为如果它只适用于一个特定用户,为什么不适用其他任何用户?
控制器:
class Gallery extends CI_Controller
function __construct()
// Call the parent construct
parent::__construct();
$this->load->model("profiles");
$this->load->model("gal_model");
$this->load->helper(array('form', 'url'));
$this->gallery_path = 'web-project-jb/assets/gallery/';
function upload()
$config = array(
'allowed_types' =>'gif|jpg|jpeg|png',
'upload_path' => $this->gallery_path,
'max_size' => 10000,
'max_width' => 1024,
'max_height' => 768);
$this->load->library('upload', $config);
$username = $this->session->userdata('username');
if ( ! $this->upload->do_upload())
$error = array('error' => $this->upload->display_errors());
$username = $this->session->userdata('username');
$viewData['username'] = $username;
$viewData['images'] = $this->gal_model->getGalleryImage($username);
$this->load->view('shared/header');
$this->load->view('gallery/galtitle', $viewData);
$this->load->view('shared/nav');
$this->load->view('gallery/galview', $error, $viewData, array('error' => ' ' ));
$this->load->view('shared/footer');
else
$file_data = $this->upload->data();
$galleryImage = $this->gallery_path.$file_data['file_name'];
$data['galleryImage'] = $this->gallery_path.$file_data['file_name'];
$this->username = $this->session->userdata('username');
$images = $this->session->userdata('images');
$data['images'] = $images;
$this->gal_model->putGalleryImage($username, $galleryImage);
$viewData['username'] = $username;
$viewData['images'] = $this->gal_model->getGalleryImage($username);
var_dump($galleryImage);
$username = $this->session->userdata('username');
$this->load->view('shared/header');
$this->load->view('gallery/galtitle', $viewData);
$this->load->view('shared/nav');
$this->load->view('gallery/galview', $viewData);
$this->load->view('shared/footer');
function index()
$username = $this->session->userdata('username');
$this->load->library('upload');
$data['gal_model'] = $this->gal_model->getGalleryImage($username);
$viewData['username'] = $username;
$viewData['images'] = $this->gal_model->getGalleryImage($username);
$this->load->view('shared/header');
$this->load->view('gallery/galtitle', $viewData);
$this->load->view('shared/nav');
$this->load->view('gallery/galview', $viewData, array('error' => ' ' ));
$this->load->view('shared/footer');
型号:
class Gal_model extends CI_Model
var $gallery_path;
function Gal_model()
parent::__construct();
function exists($username)
$this->db->select('*')->from("gallery")->where('user', $username);
$query = $this->db->get();
if ($query->num_rows() > 0)
return true;
/*
echo "user $user exists!";
$row = $query->row();
echo " and his profileimage is $row->profileimage";
*/
else
return false;
//echo "no such user as $user!";
function putGalleryImage($username, $galleryImage)
$record = array('user' => $username, 'galleryimage' => $galleryImage);
$this->session->set_userdata($galleryImage);
if ($this->exists($username))
$this->db->where('user', $username)->insert('gallery', $record);
function getGalleryImage($username)
$this->db->select('*')->from('gallery')->where('user', $username);
$imagesSet= $this->db->get();
$images = array();
foreach ($imagesSet->result() as $row)
$images[] = array('imageid' => $row->imageid,
'user' => $row->user,
'galleryimage' => $row->galleryimage);
return $images;
查看:
<div id="gallery">
<?php if (isset($images) && is_array($images)):
foreach($images as $galleryImage):
$link = $galleryImage['galleryimage'] ?>
<div class="thumb">
<img src="<?php echo base_url().$link; ?>" width='150' height='100'/>
<br>
</div>
<?php endforeach; else: ?>
<div id = "blank_gallery">Please upload an Image</div>
<?php endif; ?>
<?=form_open_multipart('gallery/upload');?>
<?=form_upload("userfile");?>
<?=form_submit('upload', 'Upload')?>
<?=form_close();?>
<?php if (isset($error)) echo $error;?>
再次感谢大家的帮助
【问题讨论】:
对于每个用户尝试从不同的浏览器。会话可能会被覆盖!。最好从连接到您的不同计算机上尝试\ 嗨,Mevin,我实际上尝试过,但没有成功,但有趣的是,尽管尚未上传任何图像,但视图中的请上传图像消息并未显示。我在想这是因为浏览器记得我以前这样做过吗? 我想是的。尝试清除缓存。如果您在 chrome 上尝试使用隐身模式 我已经尝试了这两种方法 - 仍然没有运气 - 还能是什么?肯定不会是浏览器设置阻止图像以不同的用户名进入数据库吗? 试试 print_r($images);在 if 循环中,看看它是否有任何内容。 【参考方案1】:这似乎是与目录访问有关的操作系统问题。
【讨论】:
那么为什么我的应用程序中有一个类似的个人资料图像项目,而我在这里将文件传输到数据库没有问题? 顺便说一下,我在我的图库中创建了一个删除图像选项,并成功删除了我使用的帐户的图像 - 现在我根本无法在任何帐户上添加任何图库图像! 启用error_reporting,看看在添加图片到db时是否有错误。以上是关于为啥我可以为一个用户上传图库图片,但不能为另一个用户上传?的主要内容,如果未能解决你的问题,请参考以下文章
从图库上传图像或单击移动相机流星 android 应用程序中的图像