原生js上传图片
无样式上传图片
创建一个 FormData
对象:这个对象可以用于存储数据。
将文件添加到 FormData
对象:通过 append()
方法,将用户选择的文件添加到 formData
对象中。
使用 fetch
发送请求:使用 fetch
API 或者其他方法将 FormData
对象发送到服务器。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>图片上传</title>
</head>
<body>
<!-- 文件上传 -->
<input type="file" id="fileInput" onchange="uploadImage()" />
<script>
// 上传图片的函数
function uploadImage() {
// 获取文件输入框元素
const fileInput = document.getElementById("fileInput");
// 创建formData对象,用于存储要上传的文件数据
const formData = new FormData();
formData.append("file", fileInput.files[0]); // 将选中的文件添加到formData对象中
// 请求接口
fetch("http://yikatong.kuxia.top/pc/common/upload", {
method: "POST",
body: formData, // 请求体是formData对象,其中包含文件数据
})
.then((response) => response.json()) // 服务器响应成功后,解析JSON格式的响应数据
.then((data) => {
console.log("上传成功:", data);
})
.catch((error) => {
console.error("上传失败:", error);
});
}
</script>
</body>
</html>
有样式的上传图片
就是把图片回显的地方盖着输入框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>图片上传</title>
</head>
<style>
* {
padding: 0;
margin: 0;
}
.box {
display: flex;
}
/* 添加虚线边框 */
#image {
width: 100px;
height: 100px;
border-radius: 5px;
margin-left: -100px;
}
</style>
<body>
<div class="box">
<!-- 文件上传 -->
<input
type="file"
id="fileInput"
onchange="uploadImage()"
style="height: 100px; width: 100px; opacity: 0"
/>
<!-- 用于回显图片 -->
<img id="image" src="/img/add.svg" />
</div>
<script>
const fileInput = document.getElementById("fileInput"); // 获取上传文件框
const image = document.getElementById("image"); // 获取回显图片框
function uploadImage() {
const formData = new FormData(); // 创建formData对象,用于存储要上传的文件数据
formData.append("file", fileInput.files[0]); // 将选中的文件添加到formData对象中
// 请求接口
fetch("http://yikatong.kuxia.top/pc/common/upload", {
method: "POST",
body: formData, // 请求体是formData对象,其中包含文件数据
})
.then((response) => response.json()) // 服务器响应成功后,解析JSON格式的响应数据
.then((data) => {
console.log("上传成功:", data.data.url);
// 回显图片
image.src = "http://yikatong.kuxia.top" + data.data.url;
})
.catch((error) => {
console.error("上传失败:", error);
});
}
</script>
</body>
</html>