Je cherche à créer un formulaire-upload d'image avec CodeIgniter 1.7.2répertoire de téléchargement non valide avec CodeIgniter 1.7.2
Cependant, lorsque je tente de télécharger une image, CI me informe le répertoire de téléchargement est invalide.
Pour vérifier cela, j'ai téléchargé un fichier dans le répertoire uploads
appelé test.txt
avec le contenu Hello, World!
je puis en écho le contenu de celui-ci, et voilà, il dit bonjour. Au-delà de cela, je peux naviguer dans le répertoire et voir le contenu de celui-ci dans mon navigateur, donc le répertoire existe définitivement et est visible.
Controller:
class Pictures extends Site_Controller {
// snip...
public function upload() {
$this->load->helper('form');
$this->_render('Do Upload','pictures/upload',array('msg'=>''));
}
public function do_upload() {
$this->load->helper('form');
$config['upload_path'] = base_url().'uploads/';
// test the directory:
// echo file_get_contents($config['upload_path'].'test.txt');
// should echo "Hello, World!"
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '2048';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if (! $this->upload->do_upload())
{
$data = array('msg' => $this->upload->display_errors());
$this->_render('Do Upload (Errors!)','pictures/upload',$data);
}
else
{
$uploaddata = $this->upload->data();
$this->load->model('pictures_Model','pictures');
$this->pictures->insertUploaded($uploaddata,$this->input->post('name'),$this->input->post('caption'));
$data['msg'] = 'Successful Upload!';
$this->_render('Do Upload (Success!)','pictures/upload',$data);
}
}
//...
}
$this->_render()
est juste une fonction de raccourci qui enveloppe la vue spécifiée avec les données spécifiées dans une mise en page avec un titre spécifié.
pictures/upload
Vue:
<h1>Do Upload</h1>
<? if (isset($msg)) echo $msg; ?>
<?= form_open_multipart('pictures/do_upload');?>
<input type="file" name="userfile" />
<input type="text" name="name" />
<input type="text" name="caption" />
<br /><br />
<input type="submit" value="Upload" />
</form>
Enfin, et probablement inutile, l'insert modèle:
public function insertUploaded($data,$name,$caption) {
$row = array();
$row['filename'] = $data['file_name'];
$row['mime'] = $data['file_type'];
$row['size'] = $data['file_size'];
$row['name'] = $name;
$row['caption'] = $caption;
$row['img'] = file_get_contents($data['full_path']);
$this->db->insert('pictures',$row);
}
Toute idée pourquoi mon répertoire de téléchargement est invalide?
Pourquoi cela fonctionne-t-il? –
Le chemin de téléchargement doit être un chemin de fichier sur votre serveur, pas une URL. – bradym