私の問題は、送信ボタンを押さずにcsvファイルをアップロードしたいのですが、その場合はajaxを使用しました。しかし、今では何かエラーが表示され、fopen() ファイル名を空にすることはできないというエラーが表示されます。しかし、私はすでに必要なファイル値を取得していますが、$_FILES[$fie]['tmp_name'] はこの値を読み取ることができません。しかし、変数を alert() にアタッチすると、正確なファイル名が表示されます。これは私のサンプルコードです。
これはhtmlです:
<form id="Form2">
<input type="file" id="fie" />
</form>
これはJavaScriptです:
<script style="text/javascript">
$(function(){
$('#Form2').change(function(e){
e.preventDefault();
var sub = document.getElementById("fie").files[0].name;
if($('#cat1').hasClass('show')){
$('#cat1').hide();
$('#cat2').html("<img src='pb1.gif' />");
$.ajax({
url:'uploading.php',
action:'get',
data: 'fie='+sub,
success: function(data){
$('#cat2').html(data);
}
});
}
});
});
</script>
これは PHP です: uploading.php
<?php
include("conn.php"); //assuming that connected to a database.
if (isset($_GET['fie'])) {
echo "<script>alert('".$_GET['fie']."')</script>";//IN ALERT THEY EXECUTE THE EXACT VALUE OF THE FILE I INPUT
$fie = $_GET['fie'];
$file = $_FILES[$fie]['tmp_name']; //PROBLEM IS THIS. THEY CAN'T READ THE VALUE AND TELL THEIR IS NO FILE.
$handle = fopen($file,'r') or die ('Cannot open file');
fgets($handle);
do {
if (isset($data[0])) {
mysql_query("INSERT INTO tbl_numbers (numbers,cute) VALUES ('".addslashes($data[0])."','".addslashes($data[1])."')");
}
}
while ($data = fgetcsv($handle,1000,",","'"));
echo "Successful Upload~!";
}
?>
返信いただきありがとうございます。