当前位置:首页 > 数据库 > 正文

java下载文件到本地 ajax返回文件流

java下载文件到本地 ajax返回文件流

很多朋友对于java下载文件到本地和ajax返回文件流不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!java读取本地文件一直失败Filefil...

很多朋友对于java下载文件到本地和ajax返回文件流不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

java读取本地文件一直失败

Filefile=newFile("F://ass.gif");file.exist的返回值是布尔类型

如何将java程序转换成windows服务

使用JNI调用操作系统的函数,加载注册成为系统服务。先你必须用C或C++定义本地方法,再编译成DLL组件,放到System32目录中。再将你的Java程序装载DLL库,再调用C/C++中定义的方法,完成注册服务功能。

java无法直接操作底层OS的函数。只有JNI可以实现。总之,注册系统服务的功能,必须依赖C/C++实现。如果java可以做的到,那么就不能跨平台了。

java怎样通过视频播放地址获取到视频的下载地址

在上传时手动输入视频时长,但是之前库中有上万条数据没这个信息,如果这样一条一条手动输入,人都得疯掉。所以谁也不提不管这破事,在这之前的视频时长信息就让它空在那。最近领导让我做个按类目分类统计视频时长信息,和领导反映了这个问题,最终解决方案就把没有的做0处理。在完成了这个功能后,我就在想能用什么方式把之前的视频时长全部给更新上去。手动输入这个肯定时不行的,必须得java后台来获取录入。但上网搜索了无数的帖子,最终通过java实现的只有一种方法能用,那就是先要下载到本地,然后再一个一个的遍历查询。看着服务器上的上万个视频,想想这方法就让人头皮发麻。

虽然没找到可行方法,但基本上都是用jave获取视频信息的。于是就去查看jave的官方API,了解到是通过FFmpeg处理多媒体文件,接着又查看FFmpeg的API,发现ffmpeg在命令行中使用时可以通过url获取视频。但使用jave工具包时获取MultimediaInfo就必须得传入File,可是又不能通过url创建File。于是就就反编译jave的jar从源码上动手。

//源码

publicMultimediaInfogetInfo(Filesource)

throwsInputFormatException,EncoderException

{

FFMPEGExecutorffmpeg;

ffmpeg=locator.createExecutor();

ffmpeg.addArgument("-i");

ffmpeg.addArgument(source.getAbsolutePath());

try

{

ffmpeg.execute();

}

catch(IOExceptione)

{

thrownewEncoderException(e);

}

MultimediaInfomultimediainfo;

RBufferedReaderreader=null;

reader=newRBufferedReader(newInputStreamReader(ffmpeg.getErrorStream()));

multimediainfo=parseMultimediaInfo(source,reader);

ffmpeg.destroy();

returnmultimediainfo;

Exceptionexception;

exception;

ffmpeg.destroy();

throwexception;

}

ffmpeg传入参数时使用的是

source.getAbsolutePath()获取文件的绝对路径,所以通过url创建File在这是获取的就是项目路径+url了。

然后就把传入path修改成了url,但是运行还是出现InputFormatException异常。好吧,那就继续找问题吧

然后debug发现虽然修改了path,但是这路径细看还是不对

http://v1.v.123.com\11\919\2019\zb\0181.mp4

正确的url应该是这样的:http://v1.v.123.com/11/919/2019/zb/0181.mp4

接着更正问题。

if(path.indexOf("http")!=-1){

path=source.getPath();

path=path.split(":")[0]+"://"+path.split(":")[1].substring(1);

path=path.replace("\\","/");

}

这次终于没问题了,可以正常使用了。然后还有下面这个方法的调用,源码中有个获取异常信息的也得修改path值

multimediainfo=parseMultimediaInfo(source,reader);

这个也和只需重复上面的操作就OK了。这样就完全搞定了。

importlx.jave.AudioAttributes;

importlx.jave.AudioInfo;

importlx.jave.Encoder;

importlx.jave.EncoderException;

importlx.jave.EncodingAttributes;

importlx.jave.InputFormatException;

importlx.jave.MultimediaInfo;

importlx.jave.VideoInfo;

importlx.jave.VideoSize;

/**

*jave多媒体工具类(需导出javejar包)

*@authorlongxiong

*

*/

publicclassJaveToolsTest{

publicstaticvoidmain(String[]args)throwsInputFormatException,EncoderException,Exception{

/**

*获取本地多媒体文件信息

*/

//编码器

Encoderencoder=newEncoder();

Filefile=newFile("http://*****018.mp4");

//多媒体信息

MultimediaInfoinfo=encoder.getInfo(file);

//时长信息

longduration=info.getDuration();

System.out.println("视频时长为:"+duration/1000+"秒");

//音频信息

AudioInfoaudio=info.getAudio();

intbitRate=audio.getBitRate();//比特率

intchannels=audio.getChannels();//声道

Stringdecoder=audio.getDecoder();//解码器

intsRate=audio.getSamplingRate();//采样率

System.out.println("解码器:"+decoder+",声道:"+channels+",比特率:"+bitRate+",采样率:"+sRate);

//视频信息

VideoInfovideo=info.getVideo();

intbitRate2=video.getBitRate();

FloatfRate=video.getFrameRate();//帧率

VideoSizevideoSize=video.getSize();

intheight=videoSize.getHeight();//视频高度

intwidth=videoSize.getWidth();//视频宽度

System.out.println("视频帧率:"+fRate+",比特率:"+bitRate2+",视频高度:"+height+",视频宽度:"+width);

}

}

如何利用java将本地文件上传到服务器

1.首先在本地存放一个文件;

2.接着打开IDEA开始网络编程,分别创建两个类,客户端类和服务器类;

3.接着在客户端类中创建一个本地文件输入流,读取本地文件;同时创建Socket对象,并使用网络字节输出流向服务器发起传输文件的请求;

4.然后在服务器类中创建ServerSocket对象,并使用对象的getInputStream()方法读取从客户端传来的文件;同时创建本地文件输出流,用于写出并将文件存放到服务器的指定位置;

5.服务器端接收并存储文件成功后,服务器类需要向客户端反馈相关信息,因此继续使用Socket类的getOutputStream()方法反馈文件“上传成功”的信息;客户端类使用getInputStream()方法读取服务器反馈的信息,完成一次通信;

6.最后,先启动服务器类,在启动客户端类,查看文件是否上传成功。

url下载文件原理

URL下载其实就是网页直接下载,要实现URL下载,下载的文件必须有具体的链接地址或者这个链接地址能够被Folx“翻译”指向真正的文件链接地址,所以特别要注意,如果网页提供的链接地址不是指向文件真正存放的地址,该文件是无法被下载的。

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

最新文章