0

name="pdf_statement"のinputtype="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);    

?>
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 に答える