2 qq 24932993 qq_24932993 于 2018.05.16 22:48 提问

spring mvc写上传txt文档到mysql数据库中,报错不知道怎么解决 20C

FileUpAndDownController.java

 package com.xx.persistence;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class FileUpAndDownController {

    @RequestMapping(value = "/fileUpload")
    public String upload(
            @RequestParam(value = "file", required = false) MultipartFile file,
            HttpServletRequest request, ModelMap model) throws IOException {
        Map<String, Object> insertMap = new HashMap<String, Object>();
        insertMap.put("byt", file.getBytes());
        insertMap.put("fileName", file.getOriginalFilename());

        int flag = fileUpAndDownMapper.saveFileInfo(insertMap);
        if(flag > 0)
            model.addAttribute("upload.message", "success");
        else
            model.addAttribute("upload.message", "failure");
        return "/core/param/businessparam/uploadResult";
    }
}

FileUpAndDownMapper.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
    namespace="com.xx.persistence.FileUpAndDownMapper">

    <resultMap id="fileBean" type="com.xx.web.FileUpAndDown">
        <id column="ID" property="id" jdbcType="INTEGER" />
        <result column="FILENAME" property="fileName" jdbcType="VARCHAR" />
        <result column="TESTA" property="testa" javaType="byte[]" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" />
        <result column="FILESTREAM" property="fileStream" javaType="byte[]" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" />
    </resultMap>  

    <insert id="saveFileInfo" parameterType="java.util.HashMap">
    INSERT INTO BLOBTEST(FILENAME, FILESTREAM)
    VALUES(#{fileName}, #{byt, javaType=byte[], jdbcType=BLOB, typeHandler=org.apache.ibatis.type.BlobTypeHandler})
    </insert>

    <select id="getFileByPk" resultMap="fileBean" parameterType="int">
      SELECT * FROM BLOBTEST WHERE ID=${value}
     </select>
</mapper>

xml加的

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

FileUpAndDown.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>using commons Upload to upload file</title>
</head>
<script type="text/javascript">
function downFile(){
    var fileId = document.getElementById("fileId").value;
    location.href="fileDownload?fileId=" + fileId;
}
</script>
<style>
* {
    font-family: "宋体";
    font-size: 14px
}
</style>
<body>
    <p align="center">文件上传下载</p>
    <form id="form1" name="form1" method="post" action="fileUpload" enctype="multipart/form-data">
        <table border="0" align="center">
            <tr>
                <td>上传文件:</td>
                <td><input name="file" type="file" size="20"></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="提交"> <input type="reset" name="reset" value="重置"></td>
            </tr>
        </table>
    </form>
    <div align="center">
    <input type="text" id="fileId"><input type="button" value="依据Id下载文件" onclick="javascript:downFile()">
    </div>
</body>
</html>

fileUpload.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>uploadResult</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
    <a href="fileManagePage">上传文件</a> ${requestScope['upload.message'] }
</body>
</html>

报错:fileUpAndDownMapper cannot be resolved

10个回答

qq_31290353
qq_31290353   2018.05.17 09:41

我理解那个地方应该就是他录入数据库的部分,表结构应该为一个包含下面两个列和类型的表名称为test1(举例)
byt blob
fileName varchar
你定义好表之后通过mybatisGenerator生成对应的mapper。这样的话直接可以在最上面使用
@Autowired
private Test1Mapper test1Mapper;

报错的地方改为
Test1 record = new Test1();
record.setByt(file.getBytes());
record.setFilename(file.getOriginalFileName());
int flag = test1Mapper.insert()

qq_31290353
qq_31290353 补充下insert(record)
3 个月之前 回复
dsf1234508
dsf1234508   2018.05.16 23:15

你这个fileUpAnddownMapper是哪个来的?这个根本就没定义,编辑器肯定报错嘛,如果是类的话,请注意大小写,

qq_24932993
qq_24932993 不是类啊,好像是那个xml但是改成FileUpAndDownMapper也一样没变,报错还是有
3 个月之前 回复
u012536044
u012536044   2018.05.16 23:31

没有注入fileUpAnddownMapper这个类啊,看看配置文件 或者@autowired

qq_24932993
qq_24932993 我要上传文件,你看看是不是要建一个model类来封装上传的时候的数据,而且我觉得好像mapper没有和这个controller连接起来
3 个月之前 回复
u013345561
u013345561   2018.05.17 00:00

fileUpAnddownMapper在哪儿定义的,把整个类贴出来看看

qq_24932993
qq_24932993 我要上传文件,你看看是不是要建一个model类来封装上传的时候的数据,而且我觉得好像mapper没有和这个controller连接起来
3 个月之前 回复
qq_24932993
qq_24932993 没有这个类,所以我不知道怎么弄诶,我想的是上传文件到数据库中,以二进制数据流保存到数据库中,这是网上找的,不知道怎么写,求大神指教
3 个月之前 回复
qq_42123640
qq_42123640   2018.05.17 00:51

没有这个类,所以我不知道怎么弄诶,我想的是上传文件到数据库中,以二进制数据流保存到数据库中,这是网上找的,不知道怎么写,求大神指教

fengyund1
fengyund1   2018.05.17 00:55

这里有一篇文章,应该可以解决你的问题。
https://blog.csdn.net/u014475796/article/details/49893261
大致思路:
@Serivice
public class FileUpAnddownMapper {
public int saveFileInfo(Map parm) {
String fileName=(String)parm.get("fileName");
Byte[] byts=(Byte[]) (parm.get("byt"));
//插入的sql语句
String sql=("INSERT INTO ... ");
。。。。

    return 1;


}

}

fengyund1
fengyund1 没注意看你的代码,你的fileUpAnddownMapper已经在FileUpAndDownMapper.xml中定义。至于为什么出错,原因就是二楼所说,没有注入。因对mybatis不熟悉,错在哪里你再 看看。
3 个月之前 回复
qq_34361487
qq_34361487   2018.05.17 01:26

没有这个类 , 这个类 ,是一个 Mybaties 的Mapper 接口应该 , 不建议看这种没有什么大用处的代码 , txt 文件放到文件系统里 , 不比数据库里要快更多, 楼主还是抓住时间看别的吧

qq_40081270
qq_40081270   2018.05.17 10:23

namespace="com.xx.persistence.FileUpAndDownMapper" 这个命名空间指向的是你的Dao层接口
在com.xx.persistence这个包下面创建一个FileUpAndDownMapper 接口
并且接口中的方法名参数返回值对应你的XML文件的方法。
例如insert方法在接口中
void saveFileInfo(Map map)

在你的FileUpAndDownController 类里面声明
@Autowired
private FileUpAndDownMapper downMapper;
weixin_39327518
weixin_39327518   2018.05.17 13:17

package com.xx.persistence;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class FileUpAndDownController {

@RequestMapping(value = "/fileUpload")
public String upload(
        @RequestParam(value = "file", required = false) MultipartFile file,
        HttpServletRequest request, ModelMap model) throws IOException {
    Map<String, Object> insertMap = new HashMap<String, Object>();
    insertMap.put("byt", file.getBytes());
    insertMap.put("fileName", file.getOriginalFilename());

    int flag = fileUpAndDownMapper.saveFileInfo(insertMap);
    if(flag > 0)
        model.addAttribute("upload.message", "success");
    else
        model.addAttribute("upload.message", "failure");
    return "/core/param/businessparam/uploadResult";
}

}

luwl56
luwl56   2018.05.17 13:49

请同学把错误贴出来,好分析

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SpringMVC解析Excel并存入到MySQL数据库
文件上传功能前端代码参考:http://www.cnblogs.com/mora1988/p/5546489.html 控制层Controller代码如下: @RequestMapping(value = "/getExcelData", method = RequestMethod.POST) @ResponseBody public String getExcel(HttpSer
springmvc中上传下载解决乱码的问题
springMVC上传下载乱码
SpringMVC框架实现文件的上传和下载
SpringMVC框架实现文件的上传和下载项目案例源码
SpringMVC导入Excel文件到MySQL
使用SpringMVC导入Excel文件到MySQL时,由于是第一次做,所以走了比较多弯路,希望这篇文章能够给和我一样新学的童鞋,一点启发~做这个的时候,参考了比较多的文章,特别是最后两个文件上传类和解析类的,然后根据自己的项目需要进行修改。现在找不到之前看的帖子了,所以未能贴上参考网址,如果有知道的童鞋也可以告诉我一下哈~ (关于前台上传部分,可以参考这里) SpringMVC的配置文件,需要
spring mvc 通过流直接导出文本格式(excle,csv类似)
一边我们导出文件的时候,首先会先在服务器生成文件,然后再通过 (路径+文件名)的方式 来导出。。    现在呢, 我们不需要在服务器生成文件, 直接导出,应该怎样做呢?       看demo吧!    package com.broadtech.unicom.controller; import java.io.IOException; import java.
Spring MVC上传图片的方法
@RequestMapping("savebanneradd") public String saveBannerAdd(HttpServletRequest request, @RequestParam(value="bannerimg",required = false) MultipartFile image){ //接收图片的参数,前端为file Banner banner
SpringMvc文件上传和下载
springmvc文件上传下载
SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库
/** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被占用 * 3 导入手机相同 则更新源有信息 * 4 返回错误信息 */ jsp文件 部分 浏览 以及功能键 代码: 1 div class="modal-body" style="position: relative;"> 2 form
Spring MVC 文件上传 请求路径出现302
ajaxfileupload 出现 302问题 最近一个学弟遇到了一个文件上传时显示 302的问题。 他使用的是 ajaxfileupload 的jquery框架 为什么会调用一次GET请求呢是因为 那个POST响应码是 302  框架自动请求了一次GET  把请求映射改为  upload1等其他 的就可以正常 这里有篇文章给出了方案
springMVC方法,导出/下载文件。
研究的不深,先贴代码,日后再说。@RequestMapping(value = "/form/printContract") public ResponseEntity printContract(ContractIreportForm form)throws Exception { HttpHeaders headers = new HttpHeaders(); //声明变