場所から選択できるMySqlテーブルにExcelファイルのデータを挿入する必要があり、これにはSymfony、PHPExcel、およびAjaxを使用しています。テーブルにファイルアップロードボタンを作成しました。[ファイルの選択] をクリックし、ファイルを選択して [ファイルのアップロード] をクリックすると、コンソールに「読み取り用の C:\fakepath\CRS_Data.xls を開けませんでした! ファイルが存在しません」のようなエラーが表示されます。このようにここで同じ質問をたくさん読んだことがありますが、これらを読んでも問題を解決できませんでした。以下は私のコードです。だから誰かが問題の解決策を提案してください。
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$('#uploadFile').click(function(e){
var file_path = document.getElementById("file").value;
e.preventDefault();
var urlAjax = "<?php echo URL_AJAX . '/birthPublicSearch' ?>";
// birthPublicSearch is the module name and UploadFile is action name
$.ajax({
url: urlAjax + "/UploadFile",
data: {
file_path: file_path
},
async: false,
type: "POST",
success: function(response){
console.log(response);
alert("Data Uploaded Successful");
}
});
});
});
</script>
<table border="0" cellspacing="2" cellpadding="2">
<tr>
<td bgcolor="#E6E6FA"><font color="red">Upload File</font></td>
<td></td>
<td bgcolor="#E6E6FA">
<input type="file" name="file" id="file">
</td>
</tr>
<tr>
<td colspan="2" align="center" style="padding-bottom: 10px;">
<input type="button" id="uploadFile" name="uploadFile" value="Upload File" class="btn"></input>
</td>
</tr>
</table>
アクションは次のように定義されます。
public function executeUploadFile(sfWebRequest $request) {
require_once('/../Classes/PHPExcel.php');
require_once '/../Classes/PHPExcel/IOFactory.php';
$path=$_REQUEST['file_path'];
// path I get is as C:\fakepath\CRS_Data.xls
$objPHPExcel = PHPExcel_IOFactory::load($path);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet){
$worksheetTitle = $worksheet->getTitle();
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
}
//Inserting datas into db
$i=1;
$j=0;
for ($row = 1; $row <= $highestRow; ++ $row)
{
$val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col)
{
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getValue();
}
// Insert data into mysql
$sql="INSERT INTO tempbackuptable(`bir_le_id`,`bir_le_form_no`,)VALUES($val[0], $val[1])";
$result=mysql_query($sql);
$i=$i+1;
}
$this->setLayout(false);
return sfView::NONE;
}