如何使用请求包模拟form表单发送文件到服务端

写一个脚本,使用请求包,向服务端发送post请求 携带文件
需要模拟form表单,因为后台不能改 需要知道文件名称为avatar

用什么脚本写?

js

很简单。FormData 对象就可以。等下我帮你写个demo。

那真是麻烦呢了!

FormData上传 demo

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Upload</title>
	</head>
	<body>
		<input type="file"/>
	</body>
	<script type="text/javascript">
	window.onload = event => {
		// 监听文本框事件
		document.querySelector('input').addEventListener('change', event => {
			
			// 获取到用户选择的文件对象
			const file = event.target.files[0];
			
			// 创建formData对象
			const formData = new FormData();
			// 把文件添加到formData
			formData.append('avatar', file);
			
			// 通过fetch上传
			fetch('/upload', {
				method: 'POST',
				body: formData
			}).then(response => {
				response.json().then(message => {
					// 打印服务器响应的json信息
					console.log(message);
				});
			});
		});
	}
	</script>
</html>

FormData 文档

1 Like

老哥 我想写的是一个js 文件 没有依赖form 表单的 const file = event.target.files[0]; 这个文件用node.js 怎么读取呢 const file_path = app.lib.path.join(__dirname, “…/…/test_image/test-1.jpg”); 这样吗

刚刚没有提到node.js 抱歉

那我就不是很明白你要干啥了。我不会nodejs。js还算是熟悉。

类似于在控制器里发送请求 携带文件 携带的文件怎么读取的 依赖表单读取的数据 是怎么产生的
是 readFile 出来的吗

哦,你是想用nodesjs作为客户端,post文件吗?

是的

那我没法帮到你了,我不会Nodejs。你可以通过搜素引擎检索一下关键字:nodejs post 文件

好的吧 谢谢了

1、直接使用request模块
2、使用form-data