我正在尝试使用 Ajax 获取文件的扩展名和名称。
我的ajax代码如下:
$.ajax({
type: "POST",
url: url,
data: $("#updateMember").serialize(),
mimeType: "multipart/form-data",
contentType: false,
cache: false,
processData: false,
success: function (data) {
alert(data);
}
});
在 PHP 中我有这个
$imageFileType = pathinfo($_FILES["input9"]["name"], PATHINFO_EXTENSION);
echo $imageFileType;
我的 html 是
<form method="post" enctype="multipart/form-data" id="updateMember">
<input id="input-9" name="input9" type="file" class="file file-loading" data-allowed-file-extensions='["png", "jpg", "gif", "jpeg"]' style="top: 0px;">
<li class="menu__item"><input name="offerUpload" id="dashOffersBtn" class="menu__link menu_input btnDashboard" style="margin: 0 auto; height:20px;padding: 0;padding-bottom: 22px;width: 70%;" type="button" value="SAVE"></li>
</form>
但是好像不行。我做错了什么?
最佳答案
你必须使用FormData()
来实现这一点,serialize或serializeArray()不支持文件api,使用以下解决方案:
工作解决方案的主要更新
我确实将“保存”按钮的类型从“提交”按钮更新为请使用以下 html:
<form method="post" enctype="multipart/form-data" id="updateMember">
<input id="input-9" name="input9" type="file" class="file file-loading" data-allowed-file-extensions='["png", "jpg", "gif", "jpeg"]' style="top: 0px;">
<li class="menu__item">
<input name="offerUpload" id="dashOffersBtn" class="menu__link menu_input btnDashboard" style="margin: 0 auto; height:20px;padding: 0;padding-bottom: 22px;width: 70%;" type="submit" value="SAVE">
</li>
</form>
并使用下面的 jquery 代码使其工作
jQuery('#updateMember').submit(function(e){
e.preventDefault();
var data = new FormData(this);
$.ajax({
type: "POST",
url: 'upload.php',
data: data,
mimeType: "multipart/form-data",
contentType: false,
cache: false,
dataType: "html",
processData: false,
success: function(data) {
alert(data);
}
});
});
还可以使用以下 php 代码进行扩展:
$data = $_FILES['input9'];
$data_ext = explode('/',$data['type']);
$extension = $data_ext[1];
echo $extension;
我的测试index.php代码
<强> http://pastebin.com/L81xUbxL
将Url
更改为您的目标网址。
旧的不工作
var data = new FormData('#updateMember');
$.ajax({
type: "POST",
url: url,
data: data,
mimeType: "multipart/form-data",
contentType: false,
cache: false,
dataType: "html",
processData: false,
success: function(data) {
alert(data);
}
});
要获得扩展,您可以这样做
$path_ = pathinfo($_FILES["input9"]["name"]);
$extension = $path_['extension'];
echo $extension;
关于javascript - JS - 使用 Ajax 获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37243456/