首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ajax获取文件名

使用Ajax获取文件名
EN

Stack Overflow用户
提问于 2016-05-15 20:40:14
回答 1查看 5.3K关注 0票数 1

我正在尝试使用Ajax获取文件的扩展名和名称。

我的ajax代码看起来如下:

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: url,
    data: $("#updateMember").serialize(), 
    mimeType: "multipart/form-data",
    contentType: false,
    cache: false,
    processData: false,
    success: function (data) {
        alert(data);
    }
});

在PHP中,我有这样的

代码语言:javascript
复制
$imageFileType = pathinfo($_FILES["input9"]["name"], PATHINFO_EXTENSION);
echo $imageFileType;

我的html是

代码语言:javascript
复制
<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>

但这似乎行不通。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-15 20:59:26

您必须使用FormData()来实现这一点,序列化或serializeArray()不支持文件api使用以下解决方案:

工作解决方案的主要更新

我更新了保存按钮的类型从按钮提交,请使用以下html:

代码语言:javascript
复制
<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代码使其工作

代码语言:javascript
复制
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代码作为扩展:

代码语言:javascript
复制
$data = $_FILES['input9'];
$data_ext = explode('/',$data['type']);
$extension = $data_ext[1];
echo $extension;

我的测试index.php代码

http://pastebin.com/L81xUbxL

Url更改为目标url。

旧非工作

代码语言:javascript
复制
 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);
        }
    });

为了获得分机,您可以这样做

代码语言:javascript
复制
$path_ = pathinfo($_FILES["input9"]["name"]);
$extension = $path_['extension'];
echo $extension;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37243456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档