使用 PHP 将上载的图像移动到 IIS 虚拟目录



我正在构建一个页面,允许用户输入有关特定设备的数据,并将该设备的图像上传到服务器,以便在其他用户查询该特定设备时显示该图像。设备将按序列号进行跟踪。

用户输入所有设备信息后,选择图像位置并单击提交...。设备数据被写入MySQL数据库,图像被重命名为设备的序列号,并存储在位于站点根目录中名为"uploads"的文件夹中。

一切都很完美!但是,现在我需要开始将图像存储在其他服务器上,以便我们的 GIS 系统也可以访问它们。

我们在另一台服务器上设置了一个文件夹......//trxshares/GIS/transformer_pictures。我的 IT 部门设置了一个 IIS 虚拟目录,指向数据输入站点根目录中的 trxshares 文件夹。

这是上传到本地文件夹

上传/的工作代码:
if(isset($_FILES['image']))
{
if($_FILES['image']['name'] != NULL)
{
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_type = $_FILES['image']['type'];
$exp = explode(".", $_FILES['image']['name']);
$file_ext = strtolower(end($exp));
$extensions= array("jpg");
if(in_array($file_ext,$extensions)=== false)
$errors[]="extension not allowed, please choose a .jpg file.";
if($file_size > 4096000)
$errors[]='File size must be less than 4 MB';
if(empty($errors)==true)
{
move_uploaded_file($file_tmp,"uploads/".$SerialNo.".".$file_ext);
}
else
print_r($errors);
}

同样,上面的代码运行良好。

在下一个块中,我尝试将文件移动到虚拟目录并收到错误:

if(isset($_FILES['image']))
{
if($_FILES['image']['name'] != NULL)
{
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_type = $_FILES['image']['type'];
$exp = explode(".", $_FILES['image']['name']);
$file_ext = strtolower(end($exp));
$extensions= array("jpg");
if(in_array($file_ext,$extensions)=== false)
$errors[]="extension not allowed, please choose a .jpg file.";
if($file_size > 4096000)
$errors[]='File size must be less than 4 MB';
if(empty($errors)==true)
{
move_uploaded_file($file_tmp, $_SERVER['DOCUMENT_ROOT']."\transformer_pictures\".$SerialNo.".".$file_ext);
}
else
print_r($errors);
}

并收到此错误:

警告:move_uploaded_file(C:\inetpub\wwwroot\lusapps\transformer_pictures\1684271793.jpg(:无法打开流:C:\inetpub\wwwroot\lusapps\app\power\power-transformers.php第 398 行中没有此类文件或目录 警告:move_uploaded_file((:无法将 C:\Windows\Temp\phpA27E.tmp' 移动到 C:\inetpub\wwwroot\lus.php apps\transformer_pictures\1684271793.jpg' 在第 398 行*

我似乎无法弄清楚如何正确引用虚拟目录....有什么想法吗?谢谢

尝试仅使用虚拟目录的名称。例如,如果虚拟目录transformer_pictures,则单独使用/transformer_pictures,而不使用 $SERVER[Document_Root]。

另一种方法是使用另一台服务器上的共享路径。//other_server_path/transformer_pictures,只需确保应用程序池用户有权访问该目录即可。

最新更新