我需要打开用户在blender中上传的文件(用于数据检索和处理)。
到目前为止创建$ cmd并使用exec()运行它;由于正在运行的文件始终是预定义的(C:\ xampp \ htdocs \ test.new \ test.stl),因此用于测试但无法打开用户上传的文件。
$cmd = '"C:\Users\DJ LX\Documents\blender.old\blender.exe" C:\xampp\htdocs\test.new\test.stl"';
if ((($_FILES["file"]["type"] == "application/netfabb")
|| ($_FILES["file"]["type"] == "application/sla")
|| ($_FILES["file"]["type"] == "fileapplication/sla")
|| ($_FILES["file"]["type"] == "fileapplication/vnd.ms-pki.stl")))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $file . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
exec($cmd);
我尝试使用$ _FILES信息,但这不起作用。
$cmd = "C:\Users\DJ LX\Documents\blender.old\blender.exe" $_FILES["file"]["type"];
和
$cmd = "C:\xampp\htdocs\test.new\upload" . $_FILES["file"]["type"];
我还尝试使用fopen指定为$ openfile,然后使用exec($ openfile),但是出现错误,指出exec()中的第一个参数需要是一个字符串。
$openfile = fopen($_FILES["file"]["type"], "r");
if ((($_FILES["file"]["type"] == "application/netfabb")
|| ($_FILES["file"]["type"] == "application/sla")
|| ($_FILES["file"]["type"] == "fileapplication/sla")
|| ($_FILES["file"]["type"] == "fileapplication/vnd.ms-pki.stl")))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $file . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
exec($opefile);
无论如何,我真的很困惑我如何从上传的文件中取出文件名并用它来打开文件。任何帮助将不胜感激。
答案 0 :(得分:0)
您可能正在寻找 $ _ FILES ['file'] ['tmp_name'] 。
<强>更新强>
使用临时(几乎随机)名称上传文件。你可以用 $ _ FILES ['file'] ['tmp_name'] 来实现。源文件的文件名位于 $ _ FILES ['file'] ['name'] 中。您的命令行字符串需要可执行文件和文件名之间的空格,并且应该类似于:
$cmd = '"C:\Users\DJ LX\Documents\blender.old\blender.exe" '
. escapeshellarg( $_FILES["file"]["tmp_name"] );
使用或不使用双引号可能是安全的 - 请自行检查。
答案 1 :(得分:0)
好的,所以我想出来了,谢谢你的建议蓝色。在使用$ _FILES [&#39;]&#39; [&#39; tmp_name&#39;]后,我能够让blender尝试打开它,但由于它无法识别,(tmp文件)它没有&# 39;工作。
然后我又回到$ _FILES [&#34; file&#34;] [&#34; type&#34;]但在$ _FILES [&]之后将exec($ cmd)进一步向下移动到脚本中#34;文件&#34;] [&#34;类型&#34;]被移动到上传文件夹。