在 php 中打开动态文件



我需要在blender中打开用户上传的文件(用于数据检索和处理)。

到目前为止,创建$cmd并使用exec()运行它已经用于测试,但对于打开用户上传的文件毫无用处,因为正在运行的文件始终是预定义的(C:\xampp\htdocs\test.new\test.stl)。

$cmd = '"C:UsersDJ LXDocumentsblender.oldblender.exe" C:xampphtdocstest.newtest.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:UsersDJ LXDocumentsblender.oldblender.exe" $_FILES["file"]["type"];

$cmd = "C:xampphtdocstest.newupload" . $_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);

无论如何,我真的很困惑如何从上传的文件中获取文件名并使用它来打开文件。任何帮助将不胜感激。

好的,我想通了,谢谢你的蓝色建议。在玩了 $_FILES['file']['tmp_name'] 后,我能够让搅拌机尝试打开它,但由于它无法识别,(tmp 文件)它不起作用。

然后我恢复到 $_FILES["文件"]["类型"],但在将 $_FILES["文件"]

["类型"] 移动到上传文件夹后,在脚本中进一步向下移动了 exec($cmd)。

您可能正在寻找 $_FILES['file']['tmp_name']。

更新

使用

临时(几乎随机)名称上传文件。你可以用 $_FILES['file']['tmp_name'] 得到它。源文件的文件名为 $_FILES['file']['name']。命令行字符串在可执行文件和文件名之间需要一个空格,可能看起来像这样:

$cmd = '"C:UsersDJ LXDocumentsblender.oldblender.exe" '
           . escapeshellarg( $_FILES["file"]["tmp_name"] );

无论是否使用双引号,它都是安全的 - 自己检查一下。

相关内容

  • 没有找到相关文章

最新更新