?
目录
2.浏览器访问或者postman测试的时候的URL路径问题:
先讲点别的,在接收客户端传过来的数据时,如果是一个文件怎么接收并返回,以及返回的文件大小,多个文件大小:
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
姓名: <input type="text" name="username"><br>
年龄: <input type="text" name="age"><br>
头像: <input type="file" name="image"><br>
<input type="submit" value="提交">
</form>
</body>
做事情之前不得先有一个客户端页面吗铁子。
有了之后,在建立Java连接的时候就要和上面form表单里面的三个属性有关系了,
action就是请求路径,
method就是请求方式
enctypr是上传的文件,默认值是只上传文件名,上面的是文件内容一起上传
设置好了之后要创建一个coneroller类来接收数据和返回数据:
?然后就需要把传进来的临时文件加载到本机,或者别的地方,这里就加载到本机:
import com.zaizai.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Slf4j
@RestController
public class UploadConeroller {
//接收表单项
@PostMapping("/upload")
public Result upload(String username, Integer age, MultipartFile image) throws IOException {
log.info("接收的表单项:{},{},{}",username,age,image);
UUID uuid = UUID.randomUUID();
String originalFilename = image.getOriginalFilename();
int index = originalFilename.lastIndexOf(".");
String substring = originalFilename.substring(index);
String newFileName=uuid+substring;
image.transferTo(new File("D:\\Java-Html文件转存路径\\"+newFileName));
return Result.success();
}
}
String originalFilename = image.getOriginalFilename();
这行代码从image
对象中获取其原始文件名,并将其存储在originalFilename
字符串变量中。
2.?int index = originalFilename.lastIndexOf(".");
这行代码查找originalFilename
字符串中最后一个.
字符的位置。.
通常用于表示文件扩展名,例如在文件名"example.jpg"中,.
分隔了"example"和"jpg"。lastIndexOf
方法返回这个.
字符的索引值。如果originalFilename
不包含.
字符,那么此方法将返回-1。
3.?String substring = originalFilename.substring(index);
这行代码使用之前找到的索引值(即最后一个.
的位置)来从originalFilename
中提取子字符串。这意味着它将获取原始文件名的扩展名部分。例如,如果originalFilename
是"example.jpg",那么substring
将是"jpg"。
总之,这段代码的主要目的是从给定的图像文件的原始文件名中提取文件的扩展名。
然后image调用方法transferTo把文件存到对应的的位置即可;
在Java中连接数据库时,可能会遇到各种错误。以下是一些常见的错误及其解决方法(下面其他错误里面有一些和容易被遗忘的,忽视的!!!):
由于数据库里面的变量是用下划线分割,Java里面是驼峰命名法,如果直接把数据库变量复制到里面的话,不符合Java变量命名规范,测试数据的时候会报错,例如:
?解决方法图里面已经说了。
Java为了不重复重写一样的代码,优化代码量,提供了一个注解,可以一次性给相同的URL提取出来,用的时候只用写后面不一样的即可,但是这样如果忘了修改或者多写了一遍,呢么览器访问或者postman测试的时候的URL路径的时候就会找不到要访问的数据,如下:
?只用写不一样的部分不一样的不过分: