我有一个简单的输入表单,其中包含name =“pdf_statement”的输入类型=“file”。
我希望能够上传内容并即时插入数据库。由于这只是一个测试文件,我不担心安全性(我会在功能到位后添加)。
我已阅读http://php.net/manual/en/function.stream-get-contents.php,但无法使其发挥作用。我得到错误 fopen()期望参数1是字符串,给定数组和* stream_get_contents()期望参数1是资源,布尔给定*。
我很抱歉,如果这是显而易见的,但对于正在学习的人,我无法弄清楚我做错了什么。
<?php
include('session.php');
$provider =$_POST['provider_id'];
$trd_period =$_POST['trading_period_month'];
$pdf_statement =stream_get_contents(fopen($_FILES['pdf_statement'], 'r'));
$sql_qry="update rd_provider_statement
set (pdf_statment='".$pdf_statement."', creation_user_id='SCO')
where provider='".$provider."' and trading_period_month='".$trd_period."'";
$sql_err_no=sql_select($sql_qry,$sql_res,$sql_row_count,$sql_err,$sql_uerr);
?>
答案 0 :(得分:1)
您需要以二进制模式打开文件:
fopen($_FILES['pdf_statement']['tmp_name'], 'rb')
或者您可以改为使用file_get_contents()
。
$pdf_statement = file_get_contents($_FILES['pdf_statement']['tmp_name']);
您还需要清理输入。使用mysql_real_escape_string()
答案 1 :(得分:0)
$_FILES['pdf_statement']
是一个数组,不是包含可传递给fopen
的文件路径的字符串。您还需要以二进制模式打开文件。
$pdf_statement = stream_get_contents(fopen($_FILES['pdf_statement']['tmp_name'], 'rb'));
值得指出的是,使用数据库来存储文件上传并不是一个好主意。文件系统是获取此信息的更好地方。