PDA

View Full Version : vB's Upload Function


Excalibur82
05-11-2009, 04:39 AM
Ok I have tried and failed, is there an article on using vB's upload function to write to the database?

This is what I'm using but would rather use vB's upload function.

${'userfile'}= $vbulletin->input->clean_gpc('f','userfile',TYPE_FILE);
$path = '/home/******/public_html/*******/admincp';

$filename = str_replace("'","",$vbulletin->GPC['userfile']['name']);
$filesize = ($vbulletin->GPC['userfile']['size']/1024);
$filetype = $vbulletin->GPC['userfile']['type'];
$filetname = $vbulletin->GPC['userfile']['tmp_name'];
$fileerro = $vbulletin->GPC['userfile']['error'];
$fileext = trim(strtolower(strrchr($filename, '.')));
$tmpname = tempnam('/tmp/', $filetname);
if(move_uploaded_file($filetname, $path.$tmpname)){
$filetname = $path.$tmpname.$fileext;
}

$fp = fopen($tmpname, 'r');
if (empty($filesize)){}
else{$content = fread($filetname, filesize($filename));}
$content = addslashes($content);
fclose($fp);
unlink($tmpname);


If there is an easier way then please do tell. Right now I had it actually create a temp file in the /tmp/ directory but its file size was 0 and now it won't even write temp files to that directory so I have no clue what is going on. All necessary php functions are enabled as I have checked the php info output.

Yes I borrowed this from another mod but its only temporary until I get it working then I plan to change variables to fit my mod.

Also I have thought about just uploading to a directory but I want to give the option for directory or database. My directory housing code works as it uses vB's upload function, just this stupid code doesn't and I have no idea about using vB's upload function to upload to the database.

Thanks in advance

Excalibur82
05-12-2009, 05:56 AM
New code that is now passing information but it says it cannot find the file, I check the /tmp/ directory and its there. So now I need to figure out why it won't read the file or find it. Any help appreciated.

New Code that works:
$vbulletin->input->clean_array_gpc('f', array(
'user_file' => TYPE_FILE
));
$path = '/home/*******/public_html/**************/admincp';

$filename = str_replace("'","",$vbulletin->GPC['user_file']['name']);
$filesize = ($vbulletin->GPC['user_file']['size']/1024);
$filetype = $vbulletin->GPC['user_file']['type'];
$filetname = $vbulletin->GPC['user_file']['tmp_name'];
$fileerro = $vbulletin->GPC['user_file']['error'];
$fileext = trim(strtolower(strrchr($filename, '.')));
// $tmpname = "tmp_".$filename.'.'.$fileext;
$tmpname = @tempnam('/tmp/', $filetname);

$copyto = '/tmp' . $vbulletin->session->fetch_sessionhash();
if ($result = @move_uploaded_file($vbulletin->GPC['user_file']['tmp_name'], $copyto))
{
$fp = @fopen($copyto , 'rb');
$content = @fread($fp, filesize($copyto));
$content = addslashes($content);
$fclose($fp);
@unlink($copyto);
}

And the form:
print_form_header('download', 'doaddcat', 1);
print_table_header('BFC-Download :: Category Add Process');
print_input_row('Title', 'catitle');
print_textarea_row('Description', 'cat_description');
echo '<tr><td class="' . fetch_row_bgclass() . '">Select Icon (Optional):</td><td class="alt1"><input type="hidden" name="MAX_FILE_SIZE" value="' . $vboptions[bfc_download_maxfilesize] . '" /></td></tr>';
print_upload_row('File', 'user_file');
print_select_row('Category Active', 'catactive', array('0' => 'No', '1' => 'Yes'));

print_submit_row("Add Category");

print_table_footer(5);

Excalibur82
05-13-2009, 06:02 AM
I got this solved, just took some testing.