我不知道这个问题是什么。我试图做一个图像上传脚本。但是选择的文件总是空的(null)。
这是我的表格:
<form id="coffee_talk_add" action="include/scripts/add_event.php" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<table>
<tr>
<td class="event_width">Datum:</td>
<td>
<select name="day_from" id="day_from_e">
<option value="none" class="bold italic">Tag</option>
<?php
for($i=1; $i<=31; $i++){
echo "<option value=\"".$i."\">".$i."</option>\n";
}
?>
</select>
<select name="month_from" id="month_from_e">
<option value="none" class="bold italic">Monat</option>
<?php
for($i=1; $i<=12; $i++){
echo "<option value=\"".$i."\">".$month_name[$i]."</option>\n";
}
?>
</select>
<select name="year_from" id="year_from_e">
<option value="none" class="bold italic">Jahr</option>
<?php
for($i=2008; $i<=$year; $i++){
echo "<option value=\"".$i."\">".$i."</option>\n";
}
?>
</select>
</td>
</tr>
<tr>
<td>Thema:</td>
<td class="topic"><input type="text" name="topic" id="topic_e" /></td>
</tr>
<tr>
<td>Referent:</td>
<td class="contributer"><input type="text" name="contributer" id="contributer_e" /></td>
</tr>
<tr>
<td>Beginn:</td>
<td class="begin"><input type="text" name="begin_hour" id="begin_hour_e" />:<input type="text" name="begin_min" id="begin_min_e" /> Uhr</td>
</tr>
<tr>
<td>Ort:</td>
<td class="place"><input type="text" name="place" id="place_e" /></td>
</tr>
<tr>
<td>Eintritt:</td>
<td class="entrance"><input type="text" name="entrance_euro" id="entrance_euro_e" />,<input type="text" name="entrance_cent" id="entrance_cent_e" /> €</td>
</tr>
<tr>
<td>Flyer:</td>
<td class="flyer">
<input type="hidden" name="MAX_FILE_SIZE" value="5734400">
<input type="file" name="image" id="image">
</td>
</tr>
</table>
<input type="hidden" name="coffee_talk_submit" value="true" />
<div id="add_coffee_talk">
<input type="submit" id="small" class="coffee_talk_submit" value="speichern">
</div>
</form>
这是我简单的add_event.php的提取:
if (isset($_POST['coffee_talk_submit'])) {
$file = $_FILES['image']['tmp_name'];
echo var_dump($file);
if (!isset($file)) {
//No picture choosen
echo "No file choosen";
} else {
//Do stuff
echo "upload stuff";
}
}
这是我的ajax表格:
$('.coffee_talk_submit').click(function(){
if ($('#year_from_e').val() == 'none' || $('#month_from_e').val() == 'none' || $('#day_from_e').val() == 'none'
|| $('#topic_e').val() == '' || $('#contributer_e').val() == '' || $('#begin_hour_e').val() == ''
|| $('#begin_min_e').val() == '' || $('#place_e').val() == '' || $('#entrance_euro_e').val() == '' || $('#entrance_cent_e').val() == '') {
$("#dialog_empty").dialog( "open" );
return false;
}
var form = $('#coffee_talk_add');
var data = form.serialize();
$.ajax({
url: "include/scripts/add_event.php",
type: "POST",
data: data,
dataType: 'json',
success: function (reqCode) {
if (reqCode['error_code'] == 1) {
//Termin erfolgreich eingetragen
$("#dialog_ok").dialog( "open" );
} else if (reqCode['error_code'] == 2) {
//Eintrag bereits vorhanden
$("#dialog_error").dialog( "open" );
}
clear_form_elements(form);
}
});
return false;
});
我查了一下info.php,发现允许使用file_upload,但temp_folder没有值。这是我的脚本无法找到tmp_name文件的原因吗?我无法更改任何值因为我的主机不允许在php.ini中进行任何更改(甚至无法访问文件)。如果有,还有其他方法可以解决这个问题吗?
答案 0 :(得分:1)
做var_dump($_FILES['image'])
。部分输出将具有['error']
参数。如果它不是0
,则表示存在问题,您可以从defined error codes列表中找到。
不检查是否存在tmp_name。存在上载失败但仍具有tmp_name的情况。请务必检查错误代码。
答案 1 :(得分:1)
二进制数据的数字上传需要通过隐藏的iframe完成。 ajax失败了二进制数据。 您可以使用ajax来轮询状态