我有一个统一的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等,但它总会产生一些错误)
感谢您的帮助!
答案 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