【技巧速记】SSM上传照片至数据库存储#mysql存照片#ssm上传照片

一,相关工具

mysql,idea,ssm

二,温馨提示

代码AI生成,不是单独功能,自行甄别关键代码,源码在文章顶部文件,是一个完整ssm基础项目,下面的代码userId全部改成id

三,效果展示

上传结束会报错,正常,因为结果jsp没写,但数据库已成功接收照片。

四,代码展示

1/8.User,自行G/S/T

public class User {

    private Integer id;
    private String password;
    private String name;
    private byte[] avatar;

2/8.SQL,有id和mediumblob

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `password` varchar(100) DEFAULT NULL,
  `avatar` mediumblob COMMENT '头像',
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=888889 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

3/8.add.jsp

<form action="${pageContext.request.contextPath}/user/uploadAvatar" method="post" enctype="multipart/form-data">
    <input type="file" name="avatarFile" accept="image/*" required>
    <input type="hidden" name="userId" value="${userId}"> <!-- 假设你已经有用户的ID -->
    <button type="submit">上传头像</button>
</form>

4/8.XXXcontroller

 @PostMapping("/uploadAvatar")
    public String uploadAvatar(@RequestParam("avatarFile") MultipartFile avatarFile,
                               @RequestParam("userId") Integer userId,
                               Model model) {
        try {
            // 验证文件类型和大小(可选)
            if (!avatarFile.isEmpty() && avatarFile.getContentType().startsWith("image/")) {
                byte[] avatarBytes = avatarFile.getBytes();
                userService.updateAvatar(userId, avatarBytes);
                model.addAttribute("message", "头像上传成功!");
            } else {
                model.addAttribute("message", "请上传一个有效的图片文件!");
            }
        } catch (IOException e) {
            e.printStackTrace();
            model.addAttribute("message", "头像上传失败,请重试!");
        }
        return "uploadResult"; // 跳转到结果页面
    }

5/8.UserService

public void updateAvatar(Integer userId, byte[] avatar) {
        User user = userMapper.selectByPrimaryKey(userId);
        if (user != null) {
            user.setAvatar(avatar);
            userMapper.updateByPrimaryKeySelective(user);
        }
    }

6/8.UserMapper

// UserMapper.java
public interface UserMapper {
    User selectByPrimaryKey(Integer id);
    int updateByPrimaryKeySelective(User user);
}

7/8.UserMapper.xml

<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectByPrimaryKey" resultType="User">
        SELECT * FROM user WHERE id = #{id}
    </select>
    <update id="updateByPrimaryKeySelective" parameterType="User">
        UPDATE user
        <set>
            <if test="avatar != null">
                avatar = #{avatar,jdbcType=BLOB},
            </if>
            <!-- 其他字段的更新可以在这里添加 -->
        </set>
        WHERE id = #{id}
    </update>
</mapper>

8/8.springmvc.xml

<!-- spring-mvc.xml -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 配置上传文件的属性,如大小限制等 -->
    <property name="maxUploadSize" value="5242880"/> <!-- 5MB -->
</bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值