MultipartFile上传文件数据库保存进了但是target里面没有图片

MultipartFile上传文件数据库保存进了但是target里面没有图片,第1张

这里,我只想总结一下我一下午研究文件上传,上传功能的思考。也许花费了很多时间,但还是觉得比较值的。

以前一直听说过“项目使用的所有应该保存在服务器上,”一直看过这样的代码:Java后端由各种流组成的处理或着文件的方法。当时其实都是朦胧的,似懂非懂的样子。现在或许是有那么的一点理解了:当项目或者具体说页面中存在大量的时,页面的加载可能会很慢,这时,可能就需要使用一个独立的服务器来专门的读取这些了, 所以才有了服务器的说法。(或许是这样)。

上传功能的具体实现(当然文件也一样):

总的来说是这样的, 我们在页面上通过按钮获取到某张后,会显示在页面上(如果你需要的话),显示的可以是本身,或者是的名字。然后通过ajax,把传到了Java后台,(以什么格式我还不清楚),根据我这一下午的实践,MultipartFile ,这个类可以完全接收到前台传过来的数据。,这里也许有人会问, 传到后台干嘛呢。假设你的前端调用的不是你本项目的Java后台代码,而是另外一个接口Api项目的话, 那么,其实,这个APi项目就可以当作一个服务器了。额,这里仅仅是临时保存了而已,就页面而言,如果是表单,你还需要提交表单。那么表单提交时,你还会保存吗?应该是存在服务器上的地址吧。

MultipartFile 通过 MultipartFile transferTo( new File()), 仅需要这步骤,就可以把存到服务器所在的电脑的任意一个盘或者路径里面。 其实这个很简单,难是难在 文件的创建。(坑了我很久),

new File("d:/test1/test2/test3/demopng"), 类似要创建这样的 File文件时, 你要先判断demopng 的父级路径是否存在,如果不存在则要先创建。否则你也许会报一个错误,“javaioFileNotFoundException 拒绝访问”

也许废话说了很多,下面直接上示例代码, 本实例代码亲测有效可用。本实例 前端采用layui + 后端 springMVC+MultipartFile

页面jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>

<html>

<head>

<title>文件上传demo</title>

<%@include file="/comm/mytagsjsp" %>

</head>

<body>

<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">

<legend>常规使用:普通

今天在测试同事的微信平台的发送语音的时候,发现有时候语音能发过来,有时候就不行,经过检查,发现丢掉了检测音频时长(微信里面语言时长要限定在60S内),好吧,我补上,闲着也是闲着~

首先是读取语音的时长:

<span style="font-size:14px;"> /// <summary>

/// 获取上传音频的时间长度

/// </summary>

/// <param name="strFullUrl">The STR full URL</param>

/// <returns>SystemString</returns>

/// <remarks>Editor:v-liuhch CreateTime:2015/5/15 17:32:57</remarks>

public string GetLocalVoiceTotalTime(string strFullUrl)

{

ShellClass sh = new ShellClass();

Folder dir = shNameSpace(PathGetDirectoryName(strFullUrl));

FolderItem item = dirParseName(PathGetFileName(strFullUrl));

return dirGetDetailsOf(item, 27); // 获取歌曲时长。

}</span>

使用shellclass的时候要先引用COM组件Microsoft Shell Controls And Automation,并将Embed Interop Type 设为False。

由于上述函数只支持读取本地文件,所以,我们将得到的文件先放在临时文件夹中,判断完成之后立即删除。

<span style="font-size:14px;">/// <summary>

/// 检查上传音频文件的总时间长度是否小于60s

/// </summary>

/// <param name="file">The file</param>

/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>

/// <remarks>Editor:v-liuhch CreateTime:2015/5/15 17:34:51</remarks>

public bool ChkVideoTotalTime(>

@RequestMapping(value = "/upload", method = RequestMethodPOST)

public ModelAndView onSubmit(>

File source =new File('d:\\testmp3'); 

Encoder encoder = new Encoder();

MultimediaInfo m = encodergetInfo(source);

long ls = mgetDuration();

duration = ls/1000;

Systemoutprintln("此视频时长为:"+ls/60000+"分"+(ls/1000-ls/6000060)+"秒!");

若用的是springmvc框架上传文件

Multipart>

while(iterhasNext()){

MultipartFile file = multiRequestgetFile(iternext());

String fileOldName = filegetOriginalFilename();

long duration = 0;//音频长度,秒

CommonsMultipartFile cf= (CommonsMultipartFile)file;

DiskFileItem fi = (DiskFileItem)cfgetFileItem();

File source = figetStoreLocation();

Encoder encoder = new Encoder();

MultimediaInfo m = encodergetInfo(source);

long ls = mgetDuration();

duration = ls/1000;}

java中直接使用AudioInputStream类来 *** 作音乐文件,获取时长,实例如下:

import javaioFile;

import javaioIOException;

import javaxsoundsampledAudioInputStream;

import javaxsoundsampledAudioSystem;

import javaxsoundsampledClip;

import javaxsoundsampledLineUnavailableException;

import javaxsoundsampledUnsupportedAudioFileException;

public class AudioLength {

public static void main(String[] args) throws LineUnavailableException,

UnsupportedAudioFileException, IOException {

File file = new File("d:/testwav");

Clip clip = AudioSystemgetClip();

AudioInputStream ais = AudioSystemgetAudioInputStream(file);

clipopen(ais);

Systemoutprintln( clipgetMicrosecondLength() / 1000000D + " s" );//获取音频文件时长

}

}

以上就是关于MultipartFile上传文件数据库保存进了但是target里面没有图片全部的内容,包括:MultipartFile上传文件数据库保存进了但是target里面没有图片、文章怎么测试语音时长、spring mvc怎么获取上传文件的原路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9603063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存