我已經搜索了論壇,但是最接近控制流的問題沒有幫助,或者我不明白,所以我想問一個不同的問題。將上傳的文件傳遞給腳本的另一部分以進行後續處理
我有一個HTML格式的上傳多個文件到目錄。處理上載的上傳管理器駐留在具有不同代碼的同一個腳本中,我需要將這些文件名傳遞給進行處理。
問題是文件被上傳,但他們沒有得到處理其他代碼。我不確定在鄰接代碼中傳遞$_FILES['uploadedFile']['tmp_name'])
的正確方式,因此可以使用剩餘的代碼處理這些文件。請在腳本下方找到。
更多特異性的解釋:
這個腳本專門做兩件事情。第一部分處理文件上傳,第二部分從斜體評論開始,從衆多上傳的文件中提取數據。這部分有一個變量$_infile
,它是假設獲取上傳文件的數組。我需要將文件傳遞到這個數組中。到目前爲止,我掙扎着,做到了這一點:$inFiles = ($_FILES['uploadedFile']['tmp_name']);
這是行不通的。您也可以在下面的完整代碼示例中看到它。沒有錯誤,但文件不通過,上傳後不處理。
<?php
// This part uploads text files
if (isset($_POST['uploadfiles'])) {
if (isset($_POST['uploadfiles'])) {
$number_of_uploaded_files = 0;
$number_of_moved_files = 0;
$uploaded_files = array();
$upload_directory = dirname(__file__) . '/Uploads/';
for ($i = 0; $i < count($_FILES['uploadedFile']['name']); $i++) {
//$number_of_file_fields++;
if ($_FILES['uploadedFile']['name'][$i] != '') { //check if file field empty or not
$number_of_uploaded_files++;
$uploaded_files[] = $_FILES['uploadedFile']['name'][$i];
//if (is_uploaded_file($_FILES['uploadedFile']['name'])){
if (move_uploaded_file($_FILES['uploadedFile']['tmp_name'][$i], $upload_directory . $_FILES['uploadedFile']['name'][$i])) {
$number_of_moved_files++;
}
}
}
}
echo "Files successfully uploaded . <br/>" ;
echo "Number of files submitted $number_of_uploaded_files . <br/>";
echo "Number of successfully moved files $number_of_moved_files . <br/>";
echo "File Names are <br/>" . implode(',', $uploaded_files);
*/* This is the start of a script to accept the uploaded into another array of it own for* processing.*/
$searchCriteria = array('$GPRMC');
//creating a reference for multiple text files in an array
**$inFiles = ($_FILES['uploadedFile']['tmp_name']);**
$outFile = fopen("outputRMC.txt", "w");
$outFile2 = fopen("outputGGA.txt", "w");
//processing individual files in the array called $inFiles via foreach loop
if (is_array($inFiles)) {
foreach($inFiles as $inFileName) {
$numLines = 1;
//opening the input file
$inFiles = fopen($inFileName,"r");
//This line below initially was used to obtain the the output of each textfile processed.
//dirname($inFileName).basename($inFileName,'.txt').'_out.txt',"w");
//reading the inFile line by line and outputting the line if searchCriteria is met
while(!feof($inFiles)) {
$line = fgets($inFiles);
$lineTokens = explode(',',$line);
if(in_array($lineTokens[0],$searchCriteria)) {
if (fwrite($outFile,$line)===FALSE){
echo "Problem w*riting to file\n";
}
$numLines++;
}
// Defining search criteria for $GPGGA
$lineTokens = explode(',',$line);
$searchCriteria2 = array('$GPGGA');
if(in_array($lineTokens[0],$searchCriteria2)) {
if (fwrite($outFile2,$line)===FALSE){
echo "Problem writing to file\n";
}
}
}
}
echo "<p>For the file ".$inFileName." read ".$numLines;
//close the in files
fclose($_FILES['uploadedFile']['tmp_name']);
fflush($outFile);
fflush($outFile2);
}
fclose($outFile);
fclose($outFile2);
}
?>
你能更詳細地指定問題是什麼嗎? print_r($ _ FILES);'產生了什麼? – 2010-10-18 19:18:45
該行僅用於測試數組的內容。問題是,在文件上傳後,我想通過如下分配:$ inFiles =($ _FILES ['uploadedFile'] ['tmp_name']),所以我可以使用變量$ inFiles在其他部分腳本 – ibiangalex 2010-10-18 19:42:30
我手動輸入文件名數組像這樣; $ inFiles = array('15082010_station_test_balkony.txt');現在不是這樣做,我想上傳文件,然後將它們傳遞到infrar的arrar中,這是通過一種方式自動完成的。 – ibiangalex 2010-10-18 19:52:36