liferay7.0 FileEntry and Folder

创建文件夹:

//get upload file from front
UploadPortletRequest uploadRequest=PortalUtil.getUploadPortletRequest(request);

File file=uploadRequest.getFile("file2");

// set authorziation
ServiceContext serviceContext=new ServiceContext();
//guest can view and download
serviceContext.setAddGuestPermissions(true);

// if folder not exists, it will throw exception

Folder folder = DLAppLocalServiceUtil.getFolder(groupId, 0, "qrcode");

//or query folder is exists
DynamicQuery dq = DynamicQueryFactoryUtil.forClass(DLFolder.class);
            dq.add(PropertyFactoryUtil.forName("name").eq(LSH_FOLDER_PREFIX.toLowerCase()));
            List<DLFolder> list = DLFolderLocalServiceUtil.dynamicQuery(dq);

//if folder not exists, then create folder 

folder = DLAppLocalServiceUtil.addFolder(userId, groupId, 0, "qrcode", StringPool.BLANK,serviceContext);

//check file name
String entityTitle = DLValidatorUtil.fixName("fileName");
//create file entry

FileEntry fileEntry = DLAppLocalServiceUtil.addFileEntry(userId, groupId, folder.getFolderId(),entityTitle, MimeTypesUtil.getContentType(file),"qrcode" + System.currentTimeMillis() +".jpg",StringPool.BLANK, StringPool.BLANK,file, serviceContext);

//file can change bytes
private static byte[] File2byte(File file)  
    {  
        byte[] buffer = null;  
        try  
        {  
            FileInputStream fis = new FileInputStream(file);  
            ByteArrayOutputStream bos = new ByteArrayOutputStream();  
            byte[] b = new byte[1024];  
            int n;  
            while ((n = fis.read(b)) != -1)  
            {  
                bos.write(b, 0, n);  
            }  
            fis.close();  
            bos.close();  
            buffer = bos.toByteArray();  
        }  
        catch (FileNotFoundException e)  
        {  
            e.printStackTrace();  
        }  
        catch (IOException e)  
        {  
            e.printStackTrace();  
        }  
        return buffer;  
    }

get file entry from liferay

//if imageUrl's vale is [/documents/0/67/.....],then goto if.

public static File getSytemFileJpg(String imageUrl, long groupId)
    {
        File file = FileUtil.createTempFile("jpg");
        try {
            if(!imageUrl.contains("http"))
            {
                Matcher slashMatcher = Pattern.compile("/").matcher(imageUrl);
                long folderId=0;
                String fileName=StringPool.BLANK;
                int groupIndex=0;
                int folderIndex=0;
                int fileNameIndex=0;
                int mIdx = 0;
                int uuidIndex=0;
                while(slashMatcher.find()) {
                    if(mIdx==1)
                    {
                        groupIndex=slashMatcher.start();
                    }
                    if(mIdx==2)
                    {
                        folderIndex=slashMatcher.start();
                    }
                   if(mIdx == 3){
                       fileNameIndex=slashMatcher.start();
                   }
                   if(mIdx == 4){
                       uuidIndex=slashMatcher.start();
                   }
                   mIdx++;
                }
                folderId=Long.valueOf(imageUrl.substring(folderIndex+1,fileNameIndex));
                fileName=imageUrl.substring(fileNameIndex+1,uuidIndex);
//              fileName= HttpUtil.encodeURL(HtmlUtil.unescape(fileName), true);
                _log.info("transfer file Name###########"+fileName);

                groupId=Long.valueOf(imageUrl.substring(groupIndex+1, folderIndex));
                String uuid=imageUrl.substring(uuidIndex+1, imageUrl.length());
                _log.info("groupId###########"+groupId);
                _log.info("fileName###########"+fileName);
                _log.info("folderId###########"+folderId);
                _log.info("uuid###########"+uuid);
                FileEntry fileEntry = FileEntryUtil.fetchByR_F_T(groupId, folderId, fileName);
                if(fileEntry!=null)
                {
                    getFile(file,fileEntry);
                }else{
                    fileEntry=FileEntryUtil.fetchByUUID_R(uuid, groupId);
                    if(fileEntry!=null)
                    {
                        getFile(file,fileEntry);
                    }
                }

            }else{
                URL url = new URL(imageUrl);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(5 * 1000);
                InputStream inputStream = conn.getInputStream();
                // get temp file
                FileUtil.write(file, inputStream);
                if(inputStream!=null)
                {
                    inputStream.close();
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return file;
    }

    //if you know liferay fileEntry,you can do any thing.
    public static File getFile(File file,FileEntry fileEntry)
    {
        try {
            _log.info("fileEntry###########"+fileEntry);
            InputStream tempImageStream = fileEntry.getContentStream();

            ImageBag imageBag = ImageToolUtil.read(tempImageStream);

            RenderedImage renderedImage = imageBag.getRenderedImage();

            byte[] bytes = ImageToolUtil.getBytes(renderedImage, imageBag.getType());
            FileUtil.write(file, bytes);
            if(tempImageStream!=null)
            {
                tempImageStream.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return file;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值