0
<?php
// open the current directory
$dhandle = opendir('.');
// define an array to hold the files
$files = array();

if ($dhandle) {
   // loop through all of the files
   while (false !== ($fname = readdir($dhandle))) {
      // if the file is not this file, and does not start with a '.' or '..',
      // then store it for later display
      if (($fname != 'index.htm') && ($fname != 'torcache.php')&& ($fname != 'error_log') && (substr($fname, 0, 5) != 'other') && (substr($fname, 0, 2) != 'dd') &&
          ($fname != basename($_SERVER['PHP_SELF']))) {
          // store the filename
          $files[] = (is_dir( "./$fname" )) ? "(Dir) {$fname}" : $fname;
      }
   }
   // close the directory
   closedir($dhandle);
}


function curl_upload($url,$fileFormAttribute,$file){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_VERBOSE, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch,CURLOPT_REFERER, 'https://torcache.net/');
        curl_setopt($ch,CURLOPT_ENCODING,"gzip");
        curl_setopt($ch, CURLOPT_POST, true);
        $post = array($fileFormAttribute=>"@".$file);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        $response = curl_exec($ch);
        return $response;
}
foreach( $files as $fname )
{
error_reporting(E_ALL);


$upload_result = curl_upload('http://torcache.net/autoupload.php','torrent','public_html/download_folder/'.$files[0]);
}
var_dump($upload_result);
?>

when i run this script it only posts the first item in the array instead of looping through the entire array what am i doing wrong? I want to have it loop through all the files in the dir then post them to torcache and then give me back the string;

1 Answer 1

6

Shouldn't the .$files[0] be just $fname in your fourth-from-last line? Like this:

$upload_result = curl_upload('http://...','torrent','public_html/download_folder/'.$fname);
Sign up to request clarification or add additional context in comments.

6 Comments

He's also not checking (again) to see if it's actually a file. The loop that populates the array doesn't always contain a valid file name. $files[] = (is_dir( "./$fname" )) ? "(Dir) {$fname}" : $fname;
@Scott Saunders i used that code and what is happening now is that it just uploads the first file in the directory,
Print out the filename before you try to upload it to help you debug your code. You'll probably find, as @hafichuk suggests, that you hit a directory and your filename is bad.
@ScottSaunders it appears this was the issue, how do i remove the directory from my array results?
I would just not put it in the array in the first place. If you need it there for something else, then check to see if the filename starts with "(Dir)" and ignore it if it does.
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.