0

我有一个统一的 C# 程序,它正在上传一个二进制文件(带有一些数据)。(这有点无关紧要,但也许不是)

var form = new WWWForm();
form.AddField("docid", "A");               
byte[] textarr = Encoding.ASCII.GetBytes("just a sample text to be compressed and sent to server");
form.AddBinaryData("file", textarr,"file.tmp");                
string req = "my url";        
WWW www = new WWW(req,form);

我想获取文件内容(作为二进制文件),以便能够在 PHP 端作为二进制文件发送到数据库。

我正在尝试做这样的事情:

$binaridata = ~$_FILES["file"]["name"] (what do i need to do here? tried 

file_get_content 等,但它总是会产生一些错误)

谢谢你的帮助!

4

2 回答 2

2
$binaryData = file_get_contents($_FILES['file']['tmp_name']);
                                                 ^^^^^^^^

该文件存储在由 指示的路径tmp_namename只是客户端给出的名称,实际上无关紧要。

根据您与数据库的对话方式和数据库,您希望将整个文件内容读入变量。例如,通过 PDO 使用 Postgres,您可以这样做:

$stmt = $pdo->prepare('INSERT INTO ... VALUES (:file)');

$fh = fopen($_FILES['file']['tmp_name'], 'rb');
$stmt->bindParam(':file', $fh, PDO::PARAM_LOB);

$stmt->execute();

数据库适配器会将文件作为流读取,这比将其保存在内存中要经济得多。请查阅数据库适配器的手册。

于 2013-02-23T10:35:18.207 回答
-1

为什么不尝试
$binaridata = $_FILES["file"]["name"];
添加分号并删除
〜Shadowpat

于 2013-02-22T16:59:49.787 回答