我试图将mp3文件上传到服务器而不使用提交按钮,我正在使用ajax,但是文件没有上传到服务器。我错了,这是我的代码
<script>
$(document).ready(function() {
$('#fileToUpload').change(function(){
var file_data = $('#fileToUpload').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: "modules/phone/newvoicemail.php",
type: "POST",
data: form_data,
contentType: false,
cache: false,
processData:false,
success: function(data){
console.log(data);
}
});
});
});
</script>
在newvoicemail.php中,我输入了以下代码
$src = $_FILES['file']['tmp_name'];
$file_name = $_FILES['fileToUpload']['name'];
$file_size =$_FILES['fileToUpload']['size'];
$file_tmp =$_FILES['fileToUpload']['tmp_name'];
$file_type=$_FILES['fileToUpload']['type'];
move_uploaded_file($file_tmp,"voicemail/".$file_name);
这是我的html代码
<form name="voicemailform" action="modules/phone/voicemail.php" method="POST" enctype="multipart/form-data" class="form-inline for-frm">
<input type="file" name="fileToUpload" id="fileToUpload">
</form>
答案 0 :(得分:0)
由于您是使用ajax上传的,因此不需要name
,action
,
HTML method
标签上的enctype
和form
属性。这同样适用于文件输入标签的name
属性。
您需要将 enctype:'multipart / form-data',添加到 $。ajax({...});
因为您要在JS中以参数名称 file 附加表单数据,
form_data.append('file',file_data); ,您应该在php中访问它
为 $ _ FILES ['file'] ,而不是 $ _ FILES ['fileToUpload']
HTML代码:
<form class="form-inline for-frm">
<input type="file" id="fileToUpload">
</form>
JS代码:
$('#fileToUpload').change(function () {
var file_data = $('#fileToUpload').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: "modules/phone/newvoicemail.php",
type: "POST",
data: form_data,
contentType: false,
cache: false,
enctype: 'multipart/form-data',
processData: false,
success: function (data) {
console.log(data);
}
});
});
PHP代码:newvoicemail.php
<?php
$src = $_FILES['file']['tmp_name'];
$file_name = $_FILES['file']['name'];
move_uploaded_file($src, "./voicemail/".$file_name);