---
# System prepended metadata

title: 筆記_formdata練習
tags: [Ajax, FormData, javascript, 檔案上傳]

---

# 筆記_formdata練習
----

###### tags: `檔案上傳` `javascript` `Ajax` `FormData`


### 直接使用FormData
html上有`form`元素
直接使用FormData

將整個表單交給FormData（）進行處理

```javascript=

// 直接用 $('form')[0]; 可以抓到Form
// 但是建議還是用ID抓Form
// 避免畫面上有多個Form

// You need to use standard javascript object here
var form = $('#form1')[0];  // 上下效果相同  
var form = $('form')[0];
var formData = new FormData(form);
```

還可以使用append
```javascript=
    var form = $('form')[0];
    var formdata = new FormData(form);
    formdata.append('test', 'hellow!');
```

如何看FormData裡的東西
```javascript=
    var obj = {};

    for(var i of formdata.entries()){
        //console.log(i);
        //console.log('key:' + i[0] + ' value:' + i[1]);
        obj[i[0]] = i[1];
    }
    
    console.log(formdata.entries());
    json = JSON.stringify(obj);
    console.log(json);
```
取值
```javascript=
    console.log(formdata.getAll('name'));
```

GET FILE
訪問所選文件
[使用Web應用程序中的文件](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications#Accessing_selected_files)


```javascript=
    //get file
    // 這些方法不行！！！
    var file_js = document.getElementById('file').files;
    var file_jq = $('#file')[0].files;

    // 這些可以
    var file_js = document.getElementById('file').files[0];
    var file_jq = $('#file').prop('files')[0];
    var file_jq = $('#file')[0].files[0];

```

