2017-03-25 13 views
17

Sử dụng .html liệu khi tôi gửi một tập tin vào một máy chủ bình bằng cách sử dụng sau đây tôi có thể truy cập tập tin từ yêu cầu bình toàn cầu:Ajax gửi một tập tin từ một hình thức với Axios

<form id="uploadForm" action='upload_file' role="form" method="post" enctype=multipart/form-data> 
    <input type="file" id="file" name="file"> 
    <input type=submit value=Upload> 
</form> 

Trong bình:

def post(self): 
    if 'file' in request.files: 
     .... 

Khi tôi cố gắng làm điều tương tự với Axios yêu cầu bình toàn cầu là rỗng:

<form id="uploadForm" enctype="multipart/form-data" v-on:change="uploadFile"> 
<input type="file" id="file" name="file"> 
</form> 

uploadFile: function (event) { 
    const file = event.target.files[0] 
    axios.post('upload_file', file, { 
     headers: { 
      'Content-Type': 'multipart/form-data' 
     } 
    }) 
} 

Nếu tôi sử dụng cùng một uploadFile f unction ở trên nhưng loại bỏ các tiêu đề json từ phương pháp axios.post Tôi nhận được trong các hình thức quan trọng của đối tượng yêu cầu bình của tôi một danh sách các giá trị chuỗi csv (tập tin là một .csv). Làm thế nào tôi có thể nhận được một đối tượng tập tin được gửi qua các trục?

+0

@Niklesh vâng cắt typo và dán, tôi cố định nó ở trên, bao gồm dấu ngoặc kép trong mã. –

+0

bạn đã thử 'v-on: change =" uploadFile "' với 'input' thay vì thẻ' form'? – C2486

+0

@Niklesh Tôi nhận được kết quả tương tự - dữ liệu được gửi dưới dạng chuỗi và được tải lên bởi request.form không yêu cầu.files trong bình. –

Trả lời

26

Sử dụng formData để gửi tập tin

var formData = new FormData(); 
var imagefile = document.querySelector('#file'); 
formData.append("image", imagefile.files[0]); 
axios.post('upload_file', formData, { 
    headers: { 
     'Content-Type': 'multipart/form-data' 
    } 
}) 
+1

Tôi không hoàn toàn rõ ràng những gì bạn đang làm ở đây. Đối tượng formData bạn tạo là rỗng và bạn không gán kết quả querySelector cho bất kỳ thứ gì? –

+0

@DonSmythe: bạn đã cập nhật ngay bây giờ – C2486

+0

Sau khi đăng các tệp. Chúng ta có cần truy cập chúng từ yêu cầu HTTP hay không cần truy cập chúng từ các tham số ở phía máy chủ. –

Các vấn đề liên quan