--- order: 7 title: zh-CN: 手动上传 en-US: Upload manually --- ## zh-CN `beforeUpload` 返回 `false` 后,手动上传文件。 ## en-US Upload files manually after `beforeUpload` returns `false`. ```tsx import { UploadOutlined } from '@ant-design/icons'; import { Button, message, Upload } from 'antd'; import type { RcFile, UploadFile, UploadProps } from 'antd/es/upload/interface'; import React, { useState } from 'react'; const App: React.FC = () => { const [fileList, setFileList] = useState([]); const [uploading, setUploading] = useState(false); const handleUpload = () => { const formData = new FormData(); fileList.forEach(file => { formData.append('files[]', file.originFileObj as RcFile); }); setUploading(true); // You can use any AJAX library you like fetch('https://www.mocky.io/v2/5cc8019d300000980a055e76', { method: 'POST', body: formData, }) .then(res => res.json()) .then(() => { setFileList([]); message.success('upload successfully.'); }) .catch(() => { message.error('upload failed.'); }) .finally(() => { setUploading(false); }); }; const props: UploadProps = { onRemove: file => { const index = fileList.indexOf(file); const newFileList = fileList.slice(); newFileList.splice(index, 1); setFileList(newFileList); }, beforeUpload: file => { setFileList([...fileList, file]); return false; }, fileList, }; return ( <> ); }; export default App; ```