簡體   English   中英

如何通過網絡表單傳遞完整的文件名?

[英]How can I pass a full file name through a web form?

這樣看來,我有一個將文件交給服務器的表單。 我感興趣的是僅將文件全名發送到服務器。 目前,我的代碼如下:

<form action="upload.php" method="POST" >
    <table align="center">
        <tr>
            <td align="right">
                Select your file to upload:
            </td>
            <td>
                <input name="userfile" type="file" size="50">
            </td>
        </tr>
    </table>
    <table align="center">
        <tr>
            <td align="center">
                <input type="submit" name="submit" value="Upload image" />
            </td>
        </tr>
    </table>
</form>

當表單傳遞給upload.php時,我為$ _POST ['userfile']獲得的值就是我要提交的文件的“名稱”。 我希望從此字段獲取完整路徑,而不僅僅是文件名。 我想知道是否有人對客戶端文件瀏覽器有什么建議可以解決這個問題,或者是否有另一種評估這種形式以獲取數據的方法,我將不勝感激。 我嘗試過在表單定義中添加“ enctype =“ multipart / form-data””,實際上真正令人驚訝的是我在上傳頁面上沒有任何表單信息-這是一個完全不同的問題。 無論如何,謝謝您的幫助。

編輯

詳細說明我的問題...我正在嘗試將大文件上傳到我的Web服務器。 HTTP表單在100兆位或知道之后會中斷。 在30個擁有10個不同用戶的系統上,FTP難以管理,它們不知道如何確定其客戶端為何無法連接。 這些人完成操作后,我正在編寫一個Web表單將文件上傳到服務器。 我正在嘗試找到解決方案。 上面的腳本應該將我的完整文件路徑傳遞給以下腳本:

<?
set_time_limit(300);

var_dump($_FILES);
var_dump($_POST);
$filep=$_POST['userfile'];
$name=$_POST['userfile']['name'];

echo($filep);
echo($name);
$paths="test";
$ftp_server="localhost";
$ftp_user_name="digitaljedi";
$ftp_user_pass="dontworryaboutit";

// set up a connection to ftp server
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection and login result
if ((!$conn_id) || (!$login_result)) {
    echo "FTP connection has encountered an error!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name....";
    exit;
} else {
    echo "Connected to $ftp_server, for user $ftp_user_name".".....";
}

// upload the file to the path specified
$upload = ftp_put($conn_id, $paths.'/'.$name, $filep, FTP_BINARY);

// check the upload status
if (!$upload) {
    echo "FTP upload has encountered an error!";
} else {
    echo "Uploaded file with name $name to $ftp_server ";
}

// close the FTP connection
ftp_close($conn_id);    

?>

如果我在表單中添加編碼類型,則最終在Upload.php中將沒有$ _POST數據,也沒有$ _FORM數據,而是指向“ userfile”的未定義索引。 坐着 如果我上傳說...'C:\\ users \\ digitaljedi \\ wtf.txt'-我的另一頭是'wtf.txt'。

.....

我只是嘗試將PHP調整為使用靜態路徑,而不是表單中的靜態路徑,最終我還是無法打開該文件。 顯然ftp_put使用服務器文件系統,在這里完全否定了我的整個理論。

現在我想知道的是 是否沒有通過網頁上傳大文件的解決方案? 我找到了一個Flash上​​傳器,但它的上限似乎是100兆(文檔中說這是所有Flash允許的)。 這變得越來越不值得了。

您正在上傳文件:

首先,在您的表單中,使用<form>提交它,如下所示:

<form enctype="multipart/form-data" action="uploader.php" method="POST">

其次,使用$ _FILES變量!

$_FILES['name_of_file_field']['name']

這樣就為您提供了原始文件名-更改name_of_file_field以匹配文件輸入字段的名稱,您使用了userfile因此將其更改為該文件。

如果他們正在上傳100MB +的文件,則只需更改內存大小限制以接受更大的文件:

// Set the timeout to be longer to allow the file to upload, a value in seconds (3600 = 1 hour)
set_time_limit(3600);

// Set these amounts to whatever you need (1M = 1MB)
ini_set("post_max_size", "1000M");
ini_set("upload_max_filesize", "1000M");

// Generally speaking, the memory_limit should be higher than your post size.  So make sure that's right too.
ini_set("memory_limit", "1100M");

注意ini_set() 不能用於為post_max_sizeupload_max_filesize (以及其他)設置新值。

實際上,這些變量具有PHP_INI_PERDIR訪問權限,並且只能在php.ini修改這些變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM