创建文件夹:
//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;
}