以下是我实现的视频的上传和下载(上传中我去了几个字段,但大体思路是这样的)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异常";
}
}
}
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异常";
}
}
}