grails实现文件的上传和下载

以下是我实现的视频的上传和下载(上传中我去了几个字段,但大体思路是这样的)VideoController.groovy

def upload = {
if(request.method=="POST"){
def uploadedFile = request.getFile('myFile');
if(uploadedFile&&!uploadedFile.empty) {
def name= uploadedFile.originalFilename;
videosInstance.videoPath="D://video/"+name;
uploadedFile.transferTo(new java.io.File(videoPath));
if(!videosInstance.hasErrors() && videosInstance.save()){
flash.message = "<font color='red'>视频上传成功!</font>"
}
}
else
{

flash.message = "上传视频失败!";
render(view: 'upload',model:[videosInstance:videosInstance,id:params.id])
return;
}
}

def download={


def vid=params.id;
def videoInstance = Video.get( params.id );

def fileName=videoInstance.name;
def name=new String(fileName.getBytes("UTF8"),"ISO8859-1")

def filepath = videoInstance.videoPath+fileName+"."+ videoInstance.videoType

def out =null
def inputStream = new FileInputStream(filepath)
response.setHeader("Content-disposition", "attachment; filename="+name+".flv");

response.setHeader("Content-Length","${inputStream.available()}");
response.setContentType("application/octet-stream");
response.contentType = "application/x-rarx-rar-compressed";
try{
out = response.outputStream
byte[] buffer = new byte[1024]
int i = 0
while ((i = inputStream.read(buffer,0,buffer.length)) != -1) {
out.write(buffer, 0, i)
}
def file = Video.findById(vid)
//file.setCount(file.count+1)
//file.save()
file.downCount++
file.save()
out.flush()

}


catch (Exception e) {

// println "取消下载";

e.printStackTrace()


}
finally {
if(out!=null)

try{
out.close();

if(inputStream!=null)
inputStream.close() ;
}
catch(Exception e){

// println "关闭IO异常";


}


}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值