其他数据都可以顺利存进去,只有图片路径存不进去。图片可以存进后台的文件夹中。也打印了上传的表格确认pictures里面有数据,请问是我哪里的代码有问题吗?下面都是我的后台代码,麻烦大家帮我看一下,谢谢
final static String PIC_PATH = "pictures/";
@PostMapping("/api/uploadImage")
public String uploadImage(MultipartHttpServletRequest multiRequest, HttpServletRequest request){
System.out.println("上传图片");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); //生成日期格式
String datePrefix = dateFormat.format(new Date()); //生成当前日期作为前缀
String savePath = "src/main/resources/" + PIC_PATH; // 存储路径
File folder = new File(savePath+datePrefix); //生成带当前日期的文件路径
if(!folder.isDirectory()){
folder.mkdirs();
}
String randomName = Objects.requireNonNull(multiRequest.getFile("pictures")).getOriginalFilename(); //获取图片名
//生成随机数确保唯一性,并加上图片后缀
assert randomName != null;
String saveName = UUID.randomUUID().toString() + randomName.substring(randomName.lastIndexOf("."),randomName.length());
String absolutePath = folder.getAbsolutePath(); //转换成绝对路径
try {
File fileToSave = new File(absolutePath + File.separator + saveName);
Objects.requireNonNull(multiRequest.getFile("pictures")).transferTo(fileToSave); // 图片存储到服务端
String returnPath = request.getScheme() + "://" + request.getServerName()+":"+request.getServerPort() + "/pictures/" + datePrefix +"/"+ saveName;
return returnPath;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
package com.bishe.springboot.bean;
public class InStock {
private int id;
private String itemname;
private int numbers;
private int fromwho;
private String worker;
private int state;
private String unit;
private String pictures;
public InStock() {
}
public InStock(int id, String itemname, int numbers, int fromwho, String worker, int state, String unit, String pictures) {
this.id = id;
this.itemname = itemname;
this.numbers = numbers;
this.fromwho = fromwho;
this.worker = worker;
this.state = state;
this.unit = unit;
this.pictures = pictures;
}
public int getId() {
return id;
}
public String getItemname() {
return itemname;
}
public int getNumbers() {
return numbers;
}
public int getFromwho() {
return fromwho;
}
public String getWorker() {
return worker;
}
public int getState() {
return state;
}
public String getUnit() {
return unit;
}
public String getPictures() {
return pictures;
}
public void setId(int id) {
this.id = id;
}
public void setItemname(String itemname) {
this.itemname = itemname;
}
public void setNumbers(int numbers) {
this.numbers = numbers;
}
public void setFromwho(int fromwho) {
this.fromwho = fromwho;
}
public void setWorker(String worker) {
this.worker = worker;
}
public void setState(int state) {this.state = state;}
public void setUnit(String unit) {
this.unit = unit;
}
public void setPictures(String pictures) {
this.pictures = pictures;
}
@Override
public String toString() {
return "InStock{" +
"id=" + id +
", itemname='" + itemname + '\'' +
", numbers=" + numbers +
", fromwho=" + fromwho +
", worker='" + worker + '\'' +
", state=" + state +
", unit='" + unit + '\'' +
", pictures='" + pictures + '\'' +
'}';
}
}
public int addIn(InStock inStock);
"addIn">
INSERT INTO instock
(itemname,numbers,fromwho,worker,state,unit,pictures)
VALUES
(#{itemname},#{numbers},#{fromwho},#{worker},#{state},#{unit},#{pictures})
@RequestMapping("/addIn2")
public String addIn2(@RequestBody InStock inStock){
inStock.setState(0);
inStock.setFromwho(2);
int i = inStockDao.addIn(inStock);
return i > 0 ? "success":"error";
}
检查一下这几点看看
1、数据库表 instock 中的 pictures 列定义可能不正确,导致无法存储图片路径。要确保 pictures 列的数据类型和长度与存储图片路径的字符串匹配。
2、InStock 类中的 pictures 字段可能没有正确的设置 getter 和 setter 方法,导致无法正确读取和写入图片路径数据。检查 InStock 类中 pictures 字段的 getter 和 setter 方法是否正确定义。
3、在 addIn 方法中,插入数据库的 SQL 语句可能没有正确使用 #{pictures} 占位符,导致图片路径无法正确插入到数据库中。确保 SQL 语句中使用了 #{pictures} 占位符,并且在插入时将 InStock 对象的 getPictures() 方法的返回值作为参数传入。