【问题标题】:Move an uploaded image to a IIS virtual directory using PHP使用 PHP 将上传的图像移动到 IIS 虚拟目录
【发布时间】:2018-01-12 19:43:26
【问题描述】:

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

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

一切正常!但是,现在我需要开始将图像存储在不同的服务器上,以便我们的 GIS 系统也可以访问它们。

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

这是上传到本地文件夹uploads/的工作代码:

     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 中没有这样的文件或目录第 398 行的 .php 警告:move_uploaded_file(): Unable to move 'C:\Windows\Temp\phpA27E.tmp' to 'C:\inetpub\wwwroot\lusapps\transformer_pictures\1684271793.jpg' in C:\inetpub\wwwroot \lusapps\app\power\power-transformers.php 在第 398 行*

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

【问题讨论】:

  • 检查目标文件夹的权限。 php进程可以写入吗?

标签: php iis virtual-directory


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多