前端代碼
<div class="upload-div">
<el-upload
v-model:file-list="form.fileImageList"
ref="uploadRef"
capture="false"
action="#"
accept="image/*"
list-type="picture-card"
:on-change="handleChange"
:auto-upload="false"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:multiple="true"
>
<el-icon>
<Plus/>
</el-icon>
</el-upload>
<el-dialog v-model="dialogVisible" class="image-dialog">
<img style="width: 100%;height: 100%" w-full :src="dialogImageUrl" alt="Preview Image"/>
</el-dialog>
</div>
const fileBinaryList = ref([]);
const dialogImageUrl = ref('');
const dialogVisible = ref(false);
const buttonLoading = ref(false);
const handleChange = (file, files) => {
// file是當(dāng)前上傳的文件,files是當(dāng)前所有的文件,
fileBinaryList.value = files;
};
const handlePictureCardPreview = (file) => {
dialogImageUrl.value = file.url;
dialogVisible.value = true
}
const handleRemove = (file) => {
delImageByName(file.name).then(response => {
proxy.$modal.msgSuccess("刪除成功");
}).finally(() => {
});
}
function submitForm() {
let formData = new FormData(); //FormData中的參數(shù)
formData.append('id', form.value.id);
fileBinaryList.value.forEach((item) => {
formData.append('files', item.raw);
});
uploadBinaryImage(formData);
proxy.$modal.msgSuccess("修改成功");
}
前端定義接口
export function uploadBinaryImage(data) {
return request({
url: '/update/update/uploadBinaryImage',
method: 'post',
data: data,
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
后端代碼
實(shí)體類
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.multipart.MultipartFile;
/**
* @author: rattcs
* @date: 2023/1/13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UploadDto {
private String id;
}
定義接口文章來源:http://www.zghlxwxcb.cn/news/detail-809228.html
/**
* 上傳二進(jìn)制文件圖片集合
*/
@SaCheckPermission("update:update:uploadBinaryImage")
@Log(title = "上傳二進(jìn)制文件圖片", businessType = BusinessType.INSERT)
@PostMapping("/uploadBinaryImage")
public void uploadBinaryImage(@RequestBody @RequestParam("files") MultipartFile[] files, UploadDto bo) {
iInvestigationRiverLakeDischargeOutletsService.uploadBinaryImage(files,bo);
}
上傳文件并插入數(shù)據(jù)庫數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-809228.html
@Value("${upload.dir}")
private String UPLOAD_DIR;
@Override
public void uploadBinaryImage(MultipartFile[] files,UploadDto uploadDto) {
String id = uploadDto.getId();
for (MultipartFile file : files) {
try {
// 檢查上傳目錄是否存在,不存在則創(chuàng)建
File uploadDir = new File(UPLOAD_DIR);
if (!uploadDir.exists()) {
uploadDir.mkdirs();
}
// 獲取文件名
String fileName = file.getOriginalFilename();
String suffix = file.getOriginalFilename().split("\\.")[1];
// 設(shè)置上傳文件的保存路徑
String fileUploadName = java.util.UUID.randomUUID() + "." + suffix;
Path filePath = uploadDir.toPath().resolve(fileUploadName);
// 將文件復(fù)制到指定路徑
Files.copy(file.getInputStream(), filePath, StandardCopyOption.REPLACE_EXISTING);
investigationImageMapper
.insert(new InvestigationImage() {{
setInvestigationId(Long.valueOf(id));
setImageUrl(fileUploadName);
setImageName(fileUploadName);
setCreateTime(new Date());
}});
} catch (IOException e) {
e.printStackTrace();
}
}
}
到了這里,關(guān)于Vue3使用ElementPlus中的el-upload手動(dòng)上傳并調(diào)用上傳接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!