Java-使用MultipartFile实现图片/文件上传

示例:

   

选择图片/文件 

 

上传成功

 

前端代码:

<div class="form-item flexc">
    <span class="form-item-name">请上传商品图片</span>
    <div class="form-item-list flex">
        <div class="form-case-itemupload ">
            <input id="foodImgUrl" onchange="changeImg('foodImgUrl','food_img','uploadImgName')" type="file" name="" class="serve-type-btn1">
            <img id="food_img" class="uploadimg" src="" alt="">
            <!-- <i class="serve-type-img3"></i> -->
            <i id="uploadImgName" class="serve-type-text3 c9">上传图片<br></i>
        </div>
    </div>
</div>

<div class="form-item flexc">
    <span class="form-item-name">请上传商品相关资质资料</span>
    <div class="form-item-list flex">
        <div class="form-case-itemupload ">
            <input id="qualImgUrl" onchange="changeImg('qualImgUrl','food_file','uploadTextName')" type="file" name="" class="serve-type-btn1">
            <img id="food_file" class="uploadimg" src="" alt="">
            <!-- <i class="serve-type-img3"></i> -->
            <i id="uploadTextName" class="serve-type-text3 c9">上传凭证<br></i>
        </div>
    </div>
</div>

<div class="form-item ct">
    <button onclick="addFood()" class="form-btn">确定</button>
</div>
function changeImg(inputEl,imgEl,nameEl){
    var food_img_file = $("#"+inputEl)[0].files[0];
    var imgUrl = getImgFileURL(food_img_file);
    var fileName = food_img_file.name;
    $("#"+imgEl).attr("src",imgUrl);
    $("#"+nameEl).html(fileName);
}

//获取图片文件的路径
function getImgFileURL(file) {
	var url = null ;
	if (window.createObjectURL!=undefined) { // basic
		url = window.createObjectURL(file) ;
	} else if (window.URL!=undefined) { // mozilla(firefox)
		url = window.URL.createObjectURL(file) ;
	} else if (window.webkitURL!=undefined) { // webkit or chrome
		url = window.webkitURL.createObjectURL(file) ;
	}
	return url ;
}

function addFood(){
    var foodImgFile = $('#foodImgUrl')[0].files[0];  
    uploadFile(foodImgFile);
    var foodTextFile = $('#qualImgUrl')[0].files[0];  
    uploadFile(foodTextFile);
}

function uploadFile(file){
    var formData = new FormData();  
    formData.append("file_data", file);  
    formData.append("type", "1");  
    $.ajax({  
        url: url,
        type: 'POST',  
        cache: false,  
        data: formData,  
        processData: false,  
        contentType: false,  
        success: function (data) {  
        },  
        error: function (err) {  
        }  
    });
}

Java后台:

@PostMapping("/upload")
@ResponseBody
public Map<String, Object> upload(@RequestParam("file_data") MultipartFile file_data, @RequestParam("type") String type) {
    Map<String, Object> map = new HashMap<>();
    if (file_data.isEmpty()) {
        map.put("code", "ok");
    }
    // 获取文件名
    String fileName = file_data.getOriginalFilename();
    System.out.println("上传的文件名为:" + fileName);
    // 获取文件的后缀名
    String suffixName = fileName.substring(fileName.lastIndexOf("."));
    System.out.println("上传的后缀名为:" + suffixName);
    // 文件上传后的路径
    String filePath = "d:/upload/";

    File dest = new File(filePath + fileName);
    // 检测是否存在目录
    if (!dest.getParentFile().exists()) {
        dest.getParentFile().mkdirs();
    }
    try {
        file_data.transferTo(dest);
        map.put("code", "ok");
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return map;
}

有兴趣的朋友可以加我的qq群交流学习,群里有更多源码,学习资料

QQ群:741909960     

点我进群

Java使用MultipartFile实现文件上传和下载功能。MultipartFile是Spring框架提供的一个工具类,用于处理文件上传的相关操作。通过MultipartFile,我们可以轻松地实现文件上传、多文件上传以及文件下载功能。 在Java中,我们可以通过使用@RequestParam注解来接收前端传来的文件参数,将MultipartFile对象作为方法的参数。例如,可以使用以下代码来实现文件上传功能: ```java public String uploadFile(@RequestParam("file") MultipartFile file) { // 处理文件上传的逻辑 // ... return "上传成功"; } ``` 在上面的代码中,我们使用@RequestParam注解来指定前端传来的参数名为"file",并将其封装为MultipartFile对象。 对于多文件上传,可以将MultipartFile对象封装在一个List或数组中,从而处理多个文件的上传。例如: ```java public String uploadFiles(@RequestParam("files") List<MultipartFile> files) { // 处理多文件上传的逻辑 // ... return "上传成功"; } ``` 除了文件上传,我们还可以使用MultipartFile实现文件下载功能。通过MultipartFile对象,我们可以获取文件的字节流,并将其入到输出流中,以实现文件下载。以下是一个简单的示例代码: ```java public void downloadFile(HttpServletResponse response) throws IOException { File file = new File("path/to/file"); // 文件路径 byte[] fileContent = Files.readAllBytes(file.toPath()); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + file.getName()); OutputStream outputStream = response.getOutputStream(); outputStream.write(fileContent); outputStream.flush(); outputStream.close(); } ``` 在上述代码中,我们首先读取文件内容并将其入到字节数组中。然后,我们设置响应头的Content-Type为"application/octet-stream",表示将以流的形式下载文件。同时,我们通过Content-Disposition设置文件名,将其作为附件下载。最后,将文件内容入到响应的输出流中,实现文件下载。 通过使用MultipartFile,我们可以方便地实现Java中的文件上传和下载功能。无论是单文件上传、多文件上传还是文件下载,MultipartFile都能帮助我们处理文件操作的细节。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java利用MultipartFile实现上传多份文件的代码](https://download.csdn.net/download/weixin_38603704/12746436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【java开发】使用MultipartFile进行文件上传的例子](https://blog.csdn.net/weixin_34208283/article/details/91725990)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [SpringBoot结合MultipartFile实现文件上传与文件下载](https://blog.csdn.net/weixin_44176169/article/details/105320502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Victor.Chang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值