2017-07-08 54 views
2

請怎麼可以存儲在我的主域目錄上傳的文件它應該是這樣的:如何上傳的文件在主域的目錄從一個子上傳表單存儲

move_uploaded_file(https://example.com/uploads) 
+0

您的Web服務器文件夾結構如何?通常,你會發現像Linux/Apache的'/ var/www/html'和'/ var/www/subdomain /'。 – McRed

+0

有些像public_html /主域名和subdomain.example.com/子域名...子域名文件夾不在public_html –

+0

這些文件是否已經存在於子域中,或者您是否通過表單上傳文件? – McRed

回答

0

第一步是在這裏開始處理上傳的文件:
http://php.net/manual/en/function.move-uploaded-file.php

第一個例子是幾乎正是你想要:

<?php 
$uploads_dir = '/uploads'; 
foreach ($_FILES["pictures"]["error"] as $key => $error) { 
    if ($error == UPLOAD_ERR_OK) { 
     $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; 
     // basename() may prevent filesystem traversal attacks; 
     // further validation/sanitation of the filename may be appropriate 
     $name = basename($_FILES["pictures"]["name"][$key]); 
     move_uploaded_file($tmp_name, "$uploads_dir/$name"); 
    } 
} 
?> 

您需要進行兩次編輯。 $uploads_dir需要有一個相對路徑來指定文件的上傳位置。假設您的表單位於您的子域的根目錄subdomain.example.com/中,並且您想將其移至public_html/uploads。您的新$uploads_dir看起來應該如下:

$uploads_dir = __DIR__ . '/../public_html/uploads'; 

__DIR__會給你你的PHP文件在運行當前導演這允許您創建到其他目錄的相對路徑。

第二次編輯是更新$_FILES數組以循環上傳正確的結構。它可能不是圖片中的例子。

+0

這是一個好主意,定義路徑上傳到您的應用程序的某個地方。這可以在數據庫中存儲每個文件的詳細信息,也可以在應用程序配置中。要麼工作。 – McRed

+0

請將主目錄設置爲/ home/user,在此目錄中我們有public_html和子域。所以子域絕對目錄是home/user/subdomain。而主要的域名目錄是home/user/public_html ...並且表單位於home/user/subdomain/form.php –

0

這將是一個快速骯髒的方式來做到這一點(假設你在你的子域的根目錄,你的主域是它自己的文件夾(如果你的主目錄沒有自己的文件夾刪除第二chdir)

我假設你上傳如果沒有按需要進行更改

chdir(dirname("../"));// this takes you up one level 
chdir("main_directory");// use this only if main directory is inside a folder 

$filepath = getcwd() . DIRECTORY_SEPARATOR . 'images' .DIRECTORY_SEPARATOR; 
       if (!file_exists($filepath)) { 
        mkdir($filepath, 0755);// this is only to create a new images folder if it doesnt exist 
       } 
       chdir($filepath); 
       $filename = 'file_name_you_want'; 
       $info = pathinfo($_FILES['img']['name']); 
       $ext = $info['extension']; 
       $newname = $filename . "." . $ext; 
       $types = array('image/jpeg', 'image/jpg', 'image/png'); 
       if (in_array($_FILES['img']['type'], $types)) { 
        if (move_uploaded_file($_FILES["img"]["tmp_name"], $newname)) { 
         $img_path = 'images' . DIRECTORY_SEPARATOR . $newname; 

        } else { 
         // do what needs to be done 
        } 

如果你使用的PHP 7,你可能想看看字符串

dirname (string $path [, int $levels = 1 ]);// the 2nd param would be how many levels up you want to go and $path can be your current directory using __DIR__ 
+0

我不能做這樣的事情:./public_html/uploads –

相關問題