weixin_33688840 2016-05-15 20:40 采纳率: 0%
浏览 614

JS-使用Ajax获取文件名

I am trying to get the extension and name of a file using Ajax.

My ajax code looks like:

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

In PHP I have this

$imageFileType = pathinfo($_FILES["input9"]["name"], PATHINFO_EXTENSION);
echo $imageFileType;

and my html is

<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>

but it seems to not work. What am I doing wrong?

  • 写回答

1条回答 默认 最新

  • bug^君 2016-05-15 20:59
    关注

    You have to use FormData() to make this possible, serialize or serializeArray() does not support file api's use the below solution :

    Main update for working solution

    I did update the Save button's type from button to submit please use the below 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>
    

    and use the below jquery code to make it work

    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);
                        }
                    });
            });
    

    also use the below php code for extension :

    $data = $_FILES['input9'];
    $data_ext = explode('/',$data['type']);
    $extension = $data_ext[1];
    echo $extension;
    

    My test index.php code

    http://pastebin.com/L81xUbxL

    Change Url To your target url.

    Old non working

     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);
            }
        });
    

    for getting an extension you can do this

    $path_ = pathinfo($_FILES["input9"]["name"]);
    $extension = $path_['extension'];
    echo $extension;
    
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵