作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Axios 来处理文件上传。我在显示文件上传的上传进度时遇到问题。我使用的文件上传 View 是“图片卡”。
HTML
<Upload
accept="image/*"
customRequest={uploadImage}
onChange={handleOnChange}
listType="picture-card"
fileList={defaultListOfFiles}
className="image-upload-grid"
>
{defaultListOfFiles.length >= 8 ? null : <div>Upload Button</div>}
</Upload>
const handleOnChange = ({ file, fileList, event }) => {
console.log(file, fileList, event);
//Using Hooks to update the state to the current filelist
setDefaultFileList(fileList);
//filelist - [{uid: "-1",url:'Some url to image'}]
};
const uploadImage = options => {
const { onSuccess, onError, file, onProgress } = options;
const fmData = new FormData();
const config = {
headers: { "content-type": "multipart/form-data" },
onUploadProgress: event => {
console.log((event.loaded / event.total) * 100);
onProgress({ percent: (event.loaded / event.total) * 100 },file);
}
};
fmData.append("image", file);
axios
.post("http://localhost:4000/upload", fmData, config)
.then(res => {
onSuccess(file);
console.log(res);
})
.catch(err=>{
const error = new Error('Some error');
onError({event:error});
});
}
最佳答案
antd
Upload
使用 rc-upload
在引擎盖下。 onProgress
只接受一个参数。我也用过antd
Progress
用于显示进度的另一种方式。阅读更多关于 customRequest .
JSX
import { Upload, Progress } from "antd";
const App = () => {
const [defaultFileList, setDefaultFileList] = useState([]);
const [progress, setProgress] = useState(0);
const uploadImage = async options => {
const { onSuccess, onError, file, onProgress } = options;
const fmData = new FormData();
const config = {
headers: { "content-type": "multipart/form-data" },
onUploadProgress: event => {
const percent = Math.floor((event.loaded / event.total) * 100);
setProgress(percent);
if (percent === 100) {
setTimeout(() => setProgress(0), 1000);
}
onProgress({ percent: (event.loaded / event.total) * 100 });
}
};
fmData.append("image", file);
try {
const res = await axios.post(
"https://jsonplaceholder.typicode.com/posts",
fmData,
config
);
onSuccess("Ok");
console.log("server res: ", res);
} catch (err) {
console.log("Eroor: ", err);
const error = new Error("Some error");
onError({ err });
}
};
const handleOnChange = ({ file, fileList, event }) => {
// console.log(file, fileList, event);
//Using Hooks to update the state to the current filelist
setDefaultFileList(fileList);
//filelist - [{uid: "-1",url:'Some url to image'}]
};
return (
<div class="container">
<Upload
accept="image/*"
customRequest={uploadImage}
onChange={handleOnChange}
listType="picture-card"
defaultFileList={defaultFileList}
className="image-upload-grid"
>
{defaultFileList.length >= 1 ? null : <div>Upload Button</div>}
</Upload>
{progress > 0 ? <Progress percent={progress} /> : null}
</div>
);
};
关于javascript - Ant设计文件上传中使用customRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58128062/
我正在使用扩展中的 VSCode 调试 API。我的目标是在调试 session 期间从 gdb/lldb 调试器读取 C++ 程序的 CPU 寄存器。我对当前调试器不提供的其他东西(读取内存、反汇编
我的组件一团糟。现在我传递了一个函数,我一直在尝试一百万种我无法让它工作的东西。 export default class DatafileUpload extends Component { i
我最近将 Laravel 从 5.4 升级到了 5.5 版,但是每当我在更新或存储一些使用自定义请求的信息(例如书帖(BooksRequest))时向服务器发送 API 响应时,它都会抛出如下异常:
我是一名优秀的程序员,十分优秀!