Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用MVC上传文件_Java_File_Spring Mvc_File Upload - Fatal编程技术网

Java 用MVC上传文件

Java 用MVC上传文件,java,file,spring-mvc,file-upload,Java,File,Spring Mvc,File Upload,我正在使用SpringMVC 我的网站上有一个表单,这个表单应该从网站用户那里获取文件,然后将其存储在中央数据库中。此表单类似于以下内容: <form action="getFile"> <input type = "file" name="file"> </form> public String saveFile(MultipartFile file) throws FileNotFoundException { try {

我正在使用SpringMVC

我的网站上有一个表单,这个表单应该从网站用户那里获取文件,然后将其存储在中央数据库中。此表单类似于以下内容:

<form action="getFile"> 
   <input type = "file" name="file">
</form>
public String saveFile(MultipartFile file) throws FileNotFoundException {

        try {
            List<String> nameAndFormat = getNameAndFormat(
                    Objects.requireNonNull(file.getOriginalFilename()).
                            replace(" ", "-"));
            String name = nameAndFormat.get(0);

            String format = nameAndFormat.get(1);

            if (file.isEmpty()) {
                throw new FileNotFoundException(file.getName());
            }

            if (!Arrays.asList(allowedFormats).contains(nameAndFormat.get(1).toLowerCase())) {
                throw new IOException();
            }

            String directoryName = makeDirectory(
                    Constants.ROOT_USER_DIRECTORY + Constants.ROOT_STORAGE + Constants.IMAGE_DIRECTORY)
                    .getAbsolutePath();

            timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            String updatedTimeStamp = timeStamp.replaceAll(" ", "-");
            updatedTimeStamp = updatedTimeStamp.replaceAll(":", "-");

            fileName = directoryName + "/" + updatedTimeStamp + "_" + "pic" + "." + format;

            File convertedFile = new java.io.File(fileName);

            if (convertedFile.exists()) {
                convertedFile.mkdirs();
            }

            file.transferTo(convertedFile);
            byte[] bytes = file.getBytes();
            Path path = Paths.get(fileName);
            Files.write(path, bytes);

        } catch (IOException e) {
            logger.error(e.getMessage());

        }

        return fileName;

    }

你应该用这样的词

    @PostMapping(value = "/valueOfFileWithForm")
  public static String getFile(@RequestPart(value = "file") MultipartFile file)
然后将“file”参数传递给如下方法:

<form action="getFile"> 
   <input type = "file" name="file">
</form>
public String saveFile(MultipartFile file) throws FileNotFoundException {

        try {
            List<String> nameAndFormat = getNameAndFormat(
                    Objects.requireNonNull(file.getOriginalFilename()).
                            replace(" ", "-"));
            String name = nameAndFormat.get(0);

            String format = nameAndFormat.get(1);

            if (file.isEmpty()) {
                throw new FileNotFoundException(file.getName());
            }

            if (!Arrays.asList(allowedFormats).contains(nameAndFormat.get(1).toLowerCase())) {
                throw new IOException();
            }

            String directoryName = makeDirectory(
                    Constants.ROOT_USER_DIRECTORY + Constants.ROOT_STORAGE + Constants.IMAGE_DIRECTORY)
                    .getAbsolutePath();

            timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            String updatedTimeStamp = timeStamp.replaceAll(" ", "-");
            updatedTimeStamp = updatedTimeStamp.replaceAll(":", "-");

            fileName = directoryName + "/" + updatedTimeStamp + "_" + "pic" + "." + format;

            File convertedFile = new java.io.File(fileName);

            if (convertedFile.exists()) {
                convertedFile.mkdirs();
            }

            file.transferTo(convertedFile);
            byte[] bytes = file.getBytes();
            Path path = Paths.get(fileName);
            Files.write(path, bytes);

        } catch (IOException e) {
            logger.error(e.getMessage());

        }

        return fileName;

    }
publicstringsavefile(MultipartFile文件)抛出FileNotFoundException{
试一试{
列表名称和格式=getNameAndFormat(
Objects.requirennull(文件.getOriginalFilename())。
替换(“,“-”);
String name=nameAndFormat.get(0);
String format=nameAndFormat.get(1);
if(file.isEmpty()){
抛出新的FileNotFoundException(file.getName());
}
if(!Arrays.asList(allowedFormats).contains(nameAndFormat.get(1).toLowerCase())){
抛出新IOException();
}
String directoryName=makeDirectory(
常量.ROOT\u用户目录+常量.ROOT\u存储+常量.IMAGE\u目录)
.getAbsolutePath();
时间戳=新的SimpleDataFormat(“yyyy-MM-dd HH:MM:ss”)。格式(新日期();
String updatedTimeStamp=timeStamp.replaceAll(“,”-”);
updatedTimeStamp=updatedTimeStamp.replaceAll(“:”,“-”);
fileName=directoryName+“/”+updatedTimeStamp+“”+“pic”+“+格式;
File convertedFile=newjava.io.File(文件名);
if(convertedFile.exists()){
convertedFile.mkdirs();
}
file.transferTo(转换文件);
byte[]bytes=file.getBytes();
Path Path=Path.get(文件名);
写入(路径,字节);
}捕获(IOE异常){
logger.error(例如getMessage());
}
返回文件名;
}

这部分代码“Constants.ROOT\u USER\u DIRECTORY+Constants.ROOT\u STORAGE+Constants.IMAGE\u DIRECTORY”指定要上载文件的目录

请记住使用MultipartFile上载文件很重要…这很有效,但对我的案例做了一些小的修改。谢谢:)