Hi All
I want to import the product related data from excel sheet. I did it but i have one problem in this. I excel sheet i have absolute path of image now i want to upload the image from that absolute path to our application as well store the relative path in data base as we did in product content section. i am able to store the relative path in database but image in not uploading in the required folder. Main problem is that here i am not using any html form. i paste the code below for it public static String uploadCategory(HttpServletRequest request, HttpServletResponse response) { try { String filename = "D:/category.xls"; WorkbookSettings ws = new WorkbookSettings(); ws.setLocale(new Locale("en", "EN")); Workbook workbook = Workbook.getWorkbook(new File(filename),ws); Sheet s = workbook.getSheet(0); readCategoryDataSheet(s, request); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } return "success"; } private static void readCategoryDataSheet(Sheet s, HttpServletRequest request) { Cell rowData[] = null; int successCount = 0; int failCount = 0; int rows = s.getRows(); int column = s.getColumns(); String productCategoryId = ""; String productCategoryTypeId = ""; String primaryParentCategoryId = ""; String categoryName = ""; String description = ""; String longDescription = ""; String categoryImageUrl = ""; String linkOneImageUrl = ""; String prodCatalogId = ""; String prodCatalogCategoryTypeId = ""; String sequenceNum = ""; for (int i = 1; i < rows; i++) { rowData = s.getRow(i); if (rowData[0].getContents().length() != 0) { for (int j = 0; j < column; j++) { switch (j) { case 0: productCategoryId = rowData[j].getContents(); case 1: productCategoryTypeId = rowData[j].getContents(); case 2: primaryParentCategoryId = rowData[j].getContents(); case 3: categoryName = rowData[j].getContents(); case 4: description = rowData[j].getContents(); case 5: longDescription = rowData[j].getContents(); case 6: categoryImageUrl = rowData[j].getContents(); case 7: linkOneImageUrl = rowData[j].getContents(); default: break; } } } String imageFilenameFormat = UtilProperties.getPropertyValue("catalog", "image.filename.format"); String imageServerPath = UtilProperties.getPropertyValue("catalog", "image.server.path"); String imageUrlPrefix = UtilProperties.getPropertyValue("catalog", "image.url.prefix"); // upload image FlexibleStringExpander filenameExpander = new FlexibleStringExpander(imageFilenameFormat); String catImageUrl = ""; String linkImageUrl = ""; if(categoryImageUrl != null && categoryImageUrl.length() > 0){ Object forLock = new Object(); String contentType = null; String categoryImageLocation = filenameExpander.expandString(UtilMisc.toMap("location", "categories", "type", "category", "id", productCategoryId)); String filePathPrefix = ""; String filenameToUse = categoryImageLocation; if (categoryImageLocation.lastIndexOf("/") != -1) { filePathPrefix = categoryImageLocation.substring(0, categoryImageLocation.lastIndexOf("/") + 1); // adding 1 to include the trailing slash filenameToUse = categoryImageLocation.substring(categoryImageLocation.lastIndexOf("/") + 1); } int i1; if (contentType != null && (i1 = contentType.indexOf("boundary=")) != -1) { contentType = contentType.substring(i1 + 9); contentType = "--" + contentType; } String defaultFileName = filenameToUse + "_temp"; HttpRequestFileUpload uploadObject = new HttpRequestFileUpload(); uploadObject.setOverrideFilename(defaultFileName); uploadObject.setSavePath(imageServerPath + "/" + filePathPrefix); try{ uploadObject.doUpload(request); }catch(IOException e){ Debug.logInfo("Image uploading failure", module); } String categoryImageFileName = uploadObject.getFilename(); if (categoryImageFileName != null && categoryImageFileName.length() > 0) { if (categoryImageFileName.lastIndexOf(".") > 0 && categoryImageFileName.lastIndexOf(".") < categoryImageFileName.length()) { filenameToUse += categoryImageFileName.substring(categoryImageFileName.lastIndexOf(".")); } else { filenameToUse += ".jpg"; } try{ String characterEncoding = request.getCharacterEncoding(); catImageUrl = imageUrlPrefix + "/" + filePathPrefix + java.net.URLEncoder.encode(filenameToUse, characterEncoding); }catch(Exception e){ System.out.println("Incoding Problem"); } try { File file = new File(imageServerPath + "/" + filePathPrefix, defaultFileName); File file1 = new File(imageServerPath + "/" + filePathPrefix, filenameToUse); try { file1.delete(); } catch(Exception e) { System.out.println("error deleting existing file (not neccessarily a problem)"); } file.renameTo(file1); } catch(Exception e) { e.printStackTrace(); } } } // end of upload image Timestamp fromDate = UtilDateTime.nowTimestamp(); GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); try { GenericValue DataImportCategoryList = delegator.findByPrimaryKey("DataImportCategory", UtilMisc.toMap("productCategoryId", productCategoryId)); if(DataImportCategoryList != null){ String categoryId = DataImportCategoryList.getString("productCategoryId"); if(categoryId.equals(productCategoryId)){ failCount++; } }else { GenericValue newImportCategory = delegator.makeValue("DataImportCategory", null); newImportCategory.set("productCategoryId", productCategoryId.trim()); if(productCategoryTypeId != null && productCategoryTypeId.length() > 0){ newImportCategory.set("productCategoryTypeId", productCategoryTypeId.trim()); } else { newImportCategory.set("productCategoryTypeId", "CATALOG_CATEGORY"); } if(primaryParentCategoryId != null && primaryParentCategoryId.length() > 0) newImportCategory.set("primaryParentCategoryId", primaryParentCategoryId); newImportCategory.set("categoryName", categoryName.trim()); newImportCategory.set("description", description); newImportCategory.set("longDescription", longDescription); newImportCategory.set("categoryImageUrl", catImageUrl); newImportCategory.set("linkOneImageUrl", linkImageUrl); newImportCategory.set("fromDate", fromDate); try { delegator.create(newImportCategory); Debug.logInfo("Successfully imported category ["+productCategoryId+" from row no "+ i+1 +"].", module); successCount++; } catch (GenericEntityException e) { Debug.logWarning(e.getMessage(), module); } } } catch(GenericEntityException e) { Debug.logError("Exception occured :"+e.getMessage(), module); } } } it create the temp file in corresponding directory but there is no actual image at that path. So any one have any idea regarding this please suggest me. Thanks. Nalin Chandra |
answered in the user ml
:D nalin chandra sent the following on 5/9/2009 11:15 PM: > Hi All > > I want to import the product related data from excel sheet. I did it but i > have one problem in this. > I excel sheet i have absolute path of image now i want to upload the image > from that absolute path to our application as well store the relative path > in data base as we did in product content section. > i am able to store the relative path in database but image in not uploading > in the required folder. > > Main problem is that here i am not using any html form. > > i paste the code below for it > > public static String uploadCategory(HttpServletRequest request, > HttpServletResponse response) { > > try > { > String filename = "D:/category.xls"; > WorkbookSettings ws = new WorkbookSettings(); > ws.setLocale(new Locale("en", "EN")); > Workbook workbook = Workbook.getWorkbook(new File(filename),ws); > Sheet s = workbook.getSheet(0); > readCategoryDataSheet(s, request); > workbook.close(); > } > catch (IOException e) > { > e.printStackTrace(); > } > catch (BiffException e) > { > e.printStackTrace(); > } > > return "success"; > } > > private static void readCategoryDataSheet(Sheet s, HttpServletRequest > request) > { > Cell rowData[] = null; > int successCount = 0; > int failCount = 0; > int rows = s.getRows(); > int column = s.getColumns(); > String productCategoryId = ""; > String productCategoryTypeId = ""; > String primaryParentCategoryId = ""; > String categoryName = ""; > String description = ""; > String longDescription = ""; > String categoryImageUrl = ""; > String linkOneImageUrl = ""; > String prodCatalogId = ""; > String prodCatalogCategoryTypeId = ""; > String sequenceNum = ""; > > for (int i = 1; i < rows; i++) { > rowData = s.getRow(i); > if (rowData[0].getContents().length() != 0) { > for (int j = 0; j < column; j++) { > switch (j) { > case 0: > productCategoryId = rowData[j].getContents(); > case 1: > productCategoryTypeId = rowData[j].getContents(); > case 2: > primaryParentCategoryId = rowData[j].getContents(); > case 3: > categoryName = rowData[j].getContents(); > case 4: > description = rowData[j].getContents(); > case 5: > longDescription = rowData[j].getContents(); > case 6: > categoryImageUrl = rowData[j].getContents(); > case 7: > linkOneImageUrl = rowData[j].getContents(); > default: > break; > } > } > } > String imageFilenameFormat = UtilProperties.getPropertyValue("catalog", > "image.filename.format"); > String imageServerPath = UtilProperties.getPropertyValue("catalog", > "image.server.path"); > String imageUrlPrefix = UtilProperties.getPropertyValue("catalog", > "image.url.prefix"); > > > // upload image > FlexibleStringExpander filenameExpander = new > FlexibleStringExpander(imageFilenameFormat); > String catImageUrl = ""; > String linkImageUrl = ""; > if(categoryImageUrl != null && categoryImageUrl.length() > 0){ > Object forLock = new Object(); > String contentType = null; > String categoryImageLocation = > filenameExpander.expandString(UtilMisc.toMap("location", "categories", > "type", "category", "id", productCategoryId)); > String filePathPrefix = ""; > String filenameToUse = categoryImageLocation; > if (categoryImageLocation.lastIndexOf("/") != -1) { > filePathPrefix = categoryImageLocation.substring(0, > categoryImageLocation.lastIndexOf("/") + 1); // adding 1 to include the > trailing slash > filenameToUse = > categoryImageLocation.substring(categoryImageLocation.lastIndexOf("/") + 1); > } > > int i1; > if (contentType != null && (i1 = contentType.indexOf("boundary=")) != > -1) { > contentType = contentType.substring(i1 + 9); > contentType = "--" + contentType; > } > > String defaultFileName = filenameToUse + "_temp"; > HttpRequestFileUpload uploadObject = new HttpRequestFileUpload(); > uploadObject.setOverrideFilename(defaultFileName); > uploadObject.setSavePath(imageServerPath + "/" + filePathPrefix); > try{ > uploadObject.doUpload(request); > > }catch(IOException e){ > Debug.logInfo("Image uploading failure", module); > } > String categoryImageFileName = uploadObject.getFilename(); > > if (categoryImageFileName != null && categoryImageFileName.length() > > 0) { > if (categoryImageFileName.lastIndexOf(".") > 0 && > categoryImageFileName.lastIndexOf(".") < categoryImageFileName.length()) { > filenameToUse += > categoryImageFileName.substring(categoryImageFileName.lastIndexOf(".")); > } else { > filenameToUse += ".jpg"; > } > try{ > String characterEncoding = request.getCharacterEncoding(); > catImageUrl = imageUrlPrefix + "/" + filePathPrefix + > java.net.URLEncoder.encode(filenameToUse, characterEncoding); > }catch(Exception e){ > System.out.println("Incoding Problem"); > } > > try { > File file = new File(imageServerPath + "/" + filePathPrefix, > defaultFileName); > File file1 = new File(imageServerPath + "/" + filePathPrefix, > filenameToUse); > try { > file1.delete(); > } catch(Exception e) { > System.out.println("error deleting existing file (not > neccessarily a problem)"); > } > file.renameTo(file1); > } catch(Exception e) { > e.printStackTrace(); > } > } > } > > // end of upload image > > Timestamp fromDate = UtilDateTime.nowTimestamp(); > GenericDelegator delegator = (GenericDelegator) > request.getAttribute("delegator"); > try { > GenericValue DataImportCategoryList = > delegator.findByPrimaryKey("DataImportCategory", > UtilMisc.toMap("productCategoryId", productCategoryId)); > > if(DataImportCategoryList != null){ > String categoryId = > DataImportCategoryList.getString("productCategoryId"); > if(categoryId.equals(productCategoryId)){ > failCount++; > } > }else { > GenericValue newImportCategory = > delegator.makeValue("DataImportCategory", null); > > newImportCategory.set("productCategoryId", > productCategoryId.trim()); > if(productCategoryTypeId != null && > productCategoryTypeId.length() > 0){ > newImportCategory.set("productCategoryTypeId", > productCategoryTypeId.trim()); > } else { > newImportCategory.set("productCategoryTypeId", "CATALOG_CATEGORY"); > } > if(primaryParentCategoryId != null && > primaryParentCategoryId.length() > 0) > newImportCategory.set("primaryParentCategoryId", > primaryParentCategoryId); > newImportCategory.set("categoryName", categoryName.trim()); > newImportCategory.set("description", description); > newImportCategory.set("longDescription", longDescription); > newImportCategory.set("categoryImageUrl", catImageUrl); > newImportCategory.set("linkOneImageUrl", linkImageUrl); > newImportCategory.set("fromDate", fromDate); > try { > delegator.create(newImportCategory); > Debug.logInfo("Successfully imported category > ["+productCategoryId+" from row no "+ i+1 +"].", module); > successCount++; > } catch (GenericEntityException e) { > Debug.logWarning(e.getMessage(), module); > } > > } > } catch(GenericEntityException e) { > Debug.logError("Exception occured :"+e.getMessage(), module); > } > } > > } > > > it create the temp file in corresponding directory but there is no actual > image at that path. > > So any one have any idea regarding this please suggest me. > > > Thanks. > > Nalin Chandra -- BJ Freeman http://www.businessesnetwork.com/automation http://bjfreeman.elance.com http://www.linkedin.com/profile?viewProfile=&key=1237480&locale=en_US&trk=tab_pro Systems Integrator. |
Free forum by Nabble | Edit this page |