Problems uploading different file types in codeigniter
Below is my script that i'm using to upload different files. All the solutions I've found deal only with multiple image uploads. I am totally stumped for a solution on this. Can someone tell me what it is i'm supposed to be doing to upload different files in the same form? Thanks
function do_upload()
{
$config['upload_path'] = './uploads/nav';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '2000';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('userfile'))
{
$error = array('error' => $this->upload->display_errors());
return $error;
}
else
{
$soundfig['upload_path'] = './uploads/nav';
$soundfig['allowed_types'] = 'mp3|wav';
$this->load->library('upload', $soundfig);
if ( ! $this->upload->do_upload('soundfile'))
{
$error = array('error' => $this->upload->display_errors());
return $error;
}
else
{
$data = $this->upload->data('userfile');
$sound = $this->upload->data('soundfile');
$full_path = 'uploads/nav/' . $data['file_name'];
$sound_path = 'uploads/nav/' . $sound['file_name'];
if($this->i开发者_如何学编程nput->post('active') == '1'){
$active = '1';
}else{
$active = '0';
}
$spam = array(
'image_url' => $full_path,
'sound' => $sound_path,
'active' => $active,
'url' => $this->input->post('url')
);
$id = $this->input->post('id');
$this->db->where('id', $id);
$this->db->update('NavItemData', $spam);
return true;
}
}
}
Here is my form:
<?php echo form_open_multipart('upload/do_upload');?>
<?php if(isset($buttons)) : foreach($buttons as $row) : ?>
<h2><?php echo $row->name; ?></h2>
<input type="file" name="userfile" size="20" /><br />
<input type="file" name="soundfile" size="20" />
<input type="hidden" name="oldfile" value="<?php echo $row->image_url; ?>" />
<input type="hidden" name="id" value="<?php echo $row->id; ?>" />
<br /><br />
<label>Url: </label><input type="text" name="url" value="<?php echo $row->url; ?>" /><br />
<input type="checkbox" name="active" value="1" <?php if($row->active == '1') { echo 'checked'; } ?> /><br /><br />
<input type="submit" value="submit" />
</form>
<?php endforeach; ?>
<?php endif; ?>
Just remove the $config['allowed_types']
line from your code if you want to upload all types of files or use that array to specify the file types you would like to upload eg:
$config['allowed_types'] = 'gif|jpg|png|bmp|etc';
This code may help you:-
<select name="file_provider2">
<option value="singa">Singapore</option>
</select>
<input type="file" name="singafile" id="singafile">
<select name="file_provider1">
<option value="usa">USA</option>
</select>
<input type="file" name="usafile" id="usafile">
Controller:-
if($this->input->post("file_provider1")=="usa"){
if ($_FILES['usafile']['size'] > 0){
$file = $_FILES['usafile']['tmp_name'];
//all code goes here for first file
}
}
if($this->input->post("file_provider2")=="singa"){
if ($_FILES['usafile']['size'] > 0){
$file = $_FILES['singafile']['tmp_name'];
//all code goes here for 2nd file
}
}
精彩评论