我自己从一本名为“
PHP完整参考 –
PHP5.2”的书中学习PHP
我目前在第11章FTP,上传,删除,makedir等,但遇到了本书未涵盖的几个问题:
我目前在第11章FTP,上传,删除,makedir等,但遇到了本书未涵盖的几个问题:
$connect=ftp_connect("johnsite.com"); $result=ftp_login($connect,"john@johnsite","johnnyWalker"); if(!$result){ echo'Could not connect to Server'; } $result=ftp_put($connect,'myFile.PHP',FTP_ASCII); echo'UPLOADING FILE......'; if($result){ echo'File Uploaded!'; }
我的问题:
>上传到哪个目录,如果我要上传到目录,我将如何修改代码说public_html / images / myFile.jpg
>在示例中myFile.PHP是硬编码的,如果我想要用户选择要上传的文件怎么办?我假设你可以做这样的事情是正确的:
<input type="file" name="myFile" value="upload a file" /> <input type="submit" name="upload" /> if(isset($_POST['upload'])){ $fileName=$_POST['myFile']; //file is now assigned to var name $result=ftp_put($connect,$fileName,FTP_ASCII); //file linked to var name being uploaded }
这是最有效的安全方式吗?
谢谢你的阅读
由于@Bonner表示Fabien的答案不正确,因为您正在寻找一个脚本来将文件从您网站上的页面上传到服务器.
首先要记住的是,ftp_put()功能将永远覆盖现有的文件.相反,我建议您查看PHP move_uploaded_file
码
这是表格.在action属性中,我们指定一个文件,它将处理和处理所有文件.您需要使用表单的enctype属性的multipart / form-data值.
我几乎无处不在,更好的理解.
<form action="upload.PHP" method="post" enctype="multipart/form-data"> File: <input type="file" name="upload-file" size="30" /> <input type="submit" name="submit" value="Upload file" /> </form>
upload.PHP的
<?PHP // Used to determinated if the upload file is really a valid file $isValid = true; // The maximum allowed file upload size $maxFileSize = 1024000; //Allowed file extensions $extensions = array('gif','jpg','jpeg','png'); // See if the Upload file button was pressed. if(isset($_POST['submit'])) { // See if there is a file waiting to be uploaded if(!empty($_FILES['upload-file']['name'])) { // Check for errors if(!$_FILES['upload-file']['error']) { // Renamed the file $renamedFile = strtolower($_FILES['upload-file']['tmp_name']); // Get the file extension $fileInfo = pathinfo($_FILES['upload-file']['name']); // Now vaidate it if (!in_array($fileInfo['extension'],$extensions)) { $isValid = false; echo "This file extension is not allowed"; } // Validate that the file is not bigger than 1MB if($_FILES['upload-file']['size'] > $maxFileSize) { $isValid = false; echo "Your file's size is to large. The file should not be bigger than 1MB"; } // If the file has passed all tests if($isValid) { // Move it to where we want it to be move_uploaded_file($_FILES['upload-file']['tmp_name'],'uploads/'.$renamedFile); echo 'File was successfully uploaded!'; } } // If there is an error show it else { echo 'There was an error file trying to upload the file: '.$_FILES['upload-file']['error']; } } }