Например, у меня есть переменная «$ foo», которая включает все данные, которые я хочу показать в CSV:
$foo = "some value,another value,last value";
Моя цель:
Создайте CSV-файл с именем «some.csv», содержимое которого равно $ foo
Загрузите «some.csv» на мой сервер.
Как это может быть сделано?
Обновление: Вот точный код, который работал для меня.
$foo = "some value,another value,last value"; $file = 'some_data.csv'; file_put_contents($file, $foo);
Номер 1:
file_put_contents("foobar.csv", $yourString);
Номер 2:
$c = curl_init("http://"...); curl_setopt($c, CURLOPT_POSTFIELDS, array('somefile' => "@foobar.csv")); $result = curl_exec($c); curl_close($c); print_r($result);
обратите внимание на @ перед именем файла
См. Fputcsv ()
Если $ foo уже отформатирован csv. Вы можете использовать file_put_contents()
Вы не указываете метод загрузки. Вот пример использования ftp (UNSECURE):
$foo = '...csv data...'; $username = "myUser"; $password = "myPassword"; $url = "myserver.com/file.csv"; $hostname= "ftp://$username:$password@$url"; file_put_contents($hostname, $foo);
Если у вас уже есть переменная со всеми данными, вы можете использовать file_put_contents, чтобы сохранить ее как csv
Как загрузить CSV-файл с помощью PHP ( рабочий код )
Библиотека запросов
<?php class query{ function mysql_query_string($string){ $enabled = true; $htmlspecialchars = false; # Convert special characters to HTML entities /**************************************************************** The translations performed are: '&' (ampersand) becomes '&' '"' (double quote) becomes '"' when ENT_NOQUOTES is not set. ''' (single quote) becomes ''' only when ENT_QUOTES is set. '<' (less than) becomes '<' '>' (greater than) becomes '>' *****************************************************************/ if($htmlspecialchars){ # Convert special characters to HTML entities $string = htmlspecialchars($string, ENT_QUOTES); } else{ /**************************************************************** '"' (double quote) becomes '"' ''' (single quote) becomes ''' ****************************************************************/ //$string = str_replace('"',""",$string); //$string = str_replace("'","'",$string); } if($enabled and gettype($string) == "string"){ # Escapes special characters in a string for use in a SQL statement return mysql_real_escape_string(trim($string)); } elseif($enabled and gettype($string) == "array"){ $ary_to_return = array(); foreach($string as $str){ $ary_to_return[]=mysql_real_escape_string(trim($str)); } return $ary_to_return; } else{ return trim($string); } } } ?>
Вызвать метод Csv
public function csvFileSubmitData(){ $this->load->library('query'); $query=new query(); $root = DIR_PATH.'public/administrator/csv/'; $fileToUpload= (isset($_FILES['fileToUpload']) and $_FILES['fileToUpload']['size'] > 0 and $_FILES['fileToUpload']['error'] == 0) ? $_FILES['fileToUpload'] : ""; if(is_array($fileToUpload)){ # CHECK UPLOADED FILE 1 FOR VALIDATION $fileToUpload['name'] = str_replace(" ","_",$fileToUpload['name']); $fileToUpload['name'] = str_replace("&","and",$fileToUpload['name']); # CHECK FILE TYPE IF IT IS IMAGE JPG,GIF,PNG ETC $fnarr = explode(".", $fileToUpload['name']); } $rand = rand(1000,10000); $filecsv = $rand."_".$fileToUpload['name']; $file1 = $root.$filecsv; move_uploaded_file($fileToUpload['tmp_name'],$file1); $fieldseparator = ","; $lineseparator = "\n"; $csvfile = $file1; $addauto = 0; $save = 0; $outputfile = "output.sql"; if(!file_exists($csvfile)) { echo "File not found. Make sure you specified the correct path.\n"; exit; } $file = fopen($csvfile,"r"); if(!$file) { echo "Error opening data file.\n"; exit; } $size = filesize($csvfile); if(!$size) { echo "File is empty.\n"; exit; } $csvcontent = fread($file,$size); fclose($file); $lines = 1; $queries = ""; $linearray = array(); $values = ""; $m =0; $linestext = split($lineseparator,$csvcontent); foreach($linestext as $line){ if($m++==0){ continue; } $lines++; $line = trim($line," \t"); if($line == ''){ break; } $linearray = explode($fieldseparator,$line); $topicname = $linearray[0]; $question = $linearray[1]; $answer1 = $linearray[2]; if(isset($linearray[1]) and $linearray[1] != ''){ $topicname = $query->mysql_query_string($linearray[0]); $question = $query->mysql_query_string($linearray[1]); $answer_type = $query->mysql_query_string($linearray[2]); } //Save Csv data in your table like this //query(insert into topics SET `topic`='".$topicname."',`question`='".$question."'); }}
Если вы используете Codeignitor Framework, поэтому этот код слишком легко интегрировать, нет жесткого и быстрого правила, вы также можете использовать этот код простой PHP, а также …..
Thanx AbdulSamad
Чтобы создать CSV, вам нужно разбить свою строку на массив, а затем прокрутить ее. После этого вы можете сохранить файл в любом каталоге, на который имеет доступ учетная запись веб-сервера на вашем сервере. Вот пример …
//variables for the CSV file $directory = '/sampledir/'; $file = 'samplefile.csv'; $filepath = $directory.$file; //open the file $fp = fopen("$filepath",'w+'); //create the array $foo = "some value,another value,last value"; $arrFoo = explode(',',$foo); //loop through the array and write to the file $buffer = ''; foreach($arrFoo AS $value) { $buffer .= $value."\r\n"; } fwrite($fp,$buffer); //close the file fclose($fp);
Теперь ваш файл будет записан в каталог, установленный в $directory
с именем файла, установленным в $file
.
-Джастин