0

我有一个简单的输入表单,其中包含名称为“pdf_statement”的输入类型=“文件”。

我希望能够上传内容并即时插入数据库。由于这只是一个测试文件,我不担心安全性(一旦功能到位,我将添加)。

我已阅读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);    

?>
4

2 回答 2

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()

于 2012-07-11T11:45:59.407 回答
0

$_FILES['pdf_statement']是一个数组,而不是包含可以传递给的文件路径的字符串fopen。您还需要以二进制模式打开文件。

$pdf_statement = stream_get_contents(fopen($_FILES['pdf_statement']['tmp_name'], 'rb'));

值得指出的是,使用数据库存储文件上传并不是一个好主意。文件系统是存放这些信息的好地方。

于 2012-07-11T11:48:07.470 回答