如何将$ _FILES内容放入PHP中的二进制var中?

时间:2013-02-22 16:55:16

标签: c# php

我有一个统一的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端以binari的形式发送到数据库中。

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

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

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

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

文件存储在tmp_name指示的路径中,name只是客户端提供的名称,几乎不相关。

根据您与数据库的对话方式和数据库,您希望将整个文件内容读入变量。例如,通过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();

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

答案 1 :(得分:-1)

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