`
zhangyu_2100
  • 浏览: 2117 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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异常";   
               
               
                }
                  
                
                 }
             }  
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics