JBTALKS.CC

标题: PHP ftp function 疑问 [打印本页]

作者: 宅男-兜着走    时间: 2009-11-8 02:42 AM
标题: PHP ftp function 疑问

  1. <?php
  2. $conn_id = ftp_connect("ftp.xxxxxx.com"); // stream
  3. $login_result = ftp_login($conn_id, "xxxxx", "xxxxx"); // connect liao

  4. if(isset($_POST["submit"])){ // post
  5.     ftp_chdir($conn_id , "../httpdocs/product"); // set dir.
  6. $upload = ftp_put($conn_id,  $_FIlE["image"]["tmp_name"], $_FILE["image"]["name"], FTP_BINARY); // upload current ftp

  7. // check upload status
  8. if (!$upload) {
  9.         echo "FTP upload has failed!";
  10.     } else {
  11.         echo "Uploaded $source_file to $ftp_server as $destination_file";
  12.     }
  13. // close the FTP stream
  14. ftp_close($conn_id);

  15. }
  16. ?>
  17. <html>
  18.     <form method="post" enctype="multipart/form-data">
  19.         <input type="file" name="image">
  20.         <input type="submit" value="upload" name="submit">
  21.     </form>
  22.     </html>

复制代码



一直 upload 不到, “FTP upload has failed” , 高手赐教下。
作者: goodday    时间: 2009-11-8 03:28 AM
$_FIlE["image"]["tmp_name"],
$_FILE["image"]["name"],
里面有什么???
echo 来看看
作者: Super-Tomato    时间: 2009-11-8 04:49 AM
原帖由 宅男-兜着走 于 2009-11-8 02:42 AM 发表

一直 upload 不到, “FTP upload has failed” , 高手赐教下。


<?php
$conn_id = ftp_connect("ftp.xxxxxx.com"); // stream
$login_result = ftp_login($conn_id, "xxxxx", "xxxxx"); // connect liao

if(isset($_POST["submit"])){ // post
    ftp_chdir($conn_id , "../httpdocs/product"); // set dir.
$upload = ftp_put($conn_id,  $_FIlE["image"]["tmp_name"], $_FILE["image"]["name"], FTP_BINARY); // upload current ftp

// check upload status
if (!$upload) {
        echo "FTP upload has failed!";
    } else {
        echo "Uploaded $source_file to $ftp_server as $destination_file";
    }
// close the FTP stream
ftp_close($conn_id);

}
?>
<html>
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="image">
        <input type="submit" value="upload" name="submit">
    </form>
    </html>





绿色部份應該养成習慣侦测是否有错误
紅色部份兩個参數反了, 而且 remote file 没有正确路径

bool ftp_put    ( resource $ftp_stream   , string
$remote_file
   , string $local_file   , int $mode   [, int $startpos = 0  ]



原帖由 goodday 于 2009-11-8 03:28 AM 发表
$_FIlE["image"]["tmp_name"],
$_FILE["image"]["name"],
里面有什么???
echo 来看看

这是他 html 部份上傳的檔案,不過有笔误,正确的 reserved variable 是 $_FILES

[ 本帖最后由 Super-Tomato 于 2009-11-8 04:53 AM 编辑 ]
作者: goodday    时间: 2009-11-8 01:08 PM
<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

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

// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}

// close the connection
ftp_close($conn_id);
?>

<?php
// set up basic connection
$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
if ((!$conn_id) || (!$login_result)) {
       echo "FTP connection has failed!";
       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
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// check upload status
if (!$upload) {
       echo "FTP upload has failed!";
   } else {
       echo "Uploaded $source_file to $ftp_server as $destination_file";
   }

// close the FTP stream
ftp_close($conn_id);
?>



刚查到的 官方教材
作者: 宅男-兜着走    时间: 2009-11-8 01:16 PM
原帖由 Super-Tomato 于 2009-11-8 04:49 AM 发表




   
        
        
   
   




绿色部份應該养成習慣侦测是否有错误
紅色部份兩個参數反了, 而且 remote file 没有正确路径

bool ftp_put    ( resource $ftp_stream   , string ...



中shoot到够力下。 我connect 部分, 跟 chdir 部分已经测试, 是成功的。 只是 put 的部分 不懂做么会这样罢了咯。
作者: goodday    时间: 2009-11-8 01:37 PM
没shoot 的味道啦

番茄 是指出 问题


作者: 宅男-兜着走    时间: 2009-11-8 02:14 PM
果然是你们说的 $_FILES[] 的问题。眼睛打小鸟。 问题解决。
作者: Super-Tomato    时间: 2009-11-8 03:35 PM
原帖由 goodday 于 2009-11-8 01:08 PM 发表





刚查到的 官方教材



有些寫法可以縮短


//$login_result 以後都沒用到的話, 省下記憶體的宣告和使用, 直接用 or die 停止執行及輸出錯誤
ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die('Invalid ftp username or password.');





原帖由 宅男-兜着走 于 2009-11-8 01:16 PM 发表



中shoot到够力下。 我connect 部分, 跟 chdir 部分已经测试, 是成功的。 只是 put 的部分 不懂做么会这样罢了咯。


仔細的看和養成習慣就容易找出錯誤
作者: 宅男-兜着走    时间: 2009-11-8 03:52 PM
标题: 回复 #8 Super-Tomato 的帖子
问你个问题, 假设我把FTP写成 class 。

现在有 5~6 个图片准备同时Upload。

每 upload 一次 ftp_connect 一次, upload 完成后就挂断。

FTPclass 就 new 多一次然后就 从新ftp_connect, 这样的写法执行速度上会不会比较慢?
作者: Super-Tomato    时间: 2009-11-8 04:05 PM
原帖由 宅男-兜着走 于 2009-11-8 03:52 PM 发表
问你个问题, 假设我把FTP写成 class 。

现在有 5~6 个图片准备同时Upload。

每 upload 一次 ftp_connect 一次, upload 完成后就挂断。

FTPclass 就 new 多一次然后就 从新ftp_connect, 这样的写法 ...



connect 之後當然是連續 upload 啦, 你這樣連了又斷開不就像是脫褲子放屁嗎??
如果是連續 new 多個的話, 也許會超過你的 server max connection 而被拒絕
作者: goodday    时间: 2009-11-8 06:06 PM

耶~~~~~
宅男 .net 的还难 叻
ftpwebrequest class
自己要control stream 叻

5~6 的进去的是array
upload($files)
{}

那个会 foreach(item as $files)  来处理






欢迎光临 JBTALKS.CC (https://www.jbtalks.cc/) Powered by Discuz! X2.5