這是用於驗證概念的實驗。我創建了一個VPS,其中有一個簡單的上傳表單和PHP表單處理器腳本。這一點是爲了測試我們正在開發的iOS和Android應用程序。這個問題不是關於安全性或效率(還),而僅僅是功能。我需要修改下面的PHP以使用POST接收圖像,而不需要HTML FORM的幫助。我們目前正在發佈到Dropbox和Google Drive沒有問題。我們正在研究如何將圖像存儲在我們自己的服務器上,我們只需要制定一個概念驗證來接收使用POST提交的PHP圖像。如何修改此腳本以允許使用PHP POST URL
那就不要這樣了;我想通過可用的唯一上載方法將移動設備上的圖像發送到服務器,而無需額外的庫 - HTTP。使用FTP或SSH需要額外的代碼,我們正試圖保持輕量級。所以我打算用HTTP POST發送一張圖片,我現在正在使用HTML FORM。但是,我需要制定一個只發送圖像的POST - 沒有其他變量。這是我目前的HTML表單:
<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
<!-- MAX_FILE_SIZE must precede the file input field -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<!-- Name of input element determines name in $_FILES array -->
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
這是我的處理器PHP:
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Potential error.\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
完美的作品在一個瀏覽器,沒有問題。現在我需要修改PHP部分以允許通過URL進行POST - 實質上是放棄使用HTML表單。通過使用我發送的文件的名稱來區分上傳的文件是非常好的,或者我可以從我的應用程序提供該變量。任何指導將不勝感激。
參考:http://php.net/manual/en/features.file-upload.post-method.php
我不確定我明白什麼是「通過URL的通用POST」? – Qualcuno 2014-10-31 14:11:50
你是什麼意思「允許通過URL的普通POST」?如果您通過網址發帖,是不是GET? – 2014-10-31 14:12:04
'可能的攻擊'?這很愚蠢。您甚至從不會檢查上傳是否真正成功。如果上傳失敗,那麼移動命令也會失敗,你會尖叫「攻擊!」 。不,你不能在沒有'file'輸入欄和表單的情況下上傳文件。其他任何情況都會導致安全違規,允許在用戶機器上任意上傳任何文件。 – 2014-10-31 14:12:55