From ef9c2ad8fe4b9e814574e1d1cd211f1f49656911 Mon Sep 17 00:00:00 2001 From: Richard Millet Date: Wed, 13 Feb 2013 00:31:16 -0800 Subject: [PATCH] CSPACE-5497: Will now create a temp file if we find a file with a name that Nuxeo does not like. We preserve the original file name in the BlobsCommon instance. --- .../src/test/resources/blobs/silly==1,d.jpg | Bin 0 -> 56261 bytes .../services/common/FileUtils.java | 38 +++++++++++++++++- .../common/imaging/nuxeo/NuxeoBlobUtils.java | 9 ++++- 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 services/blob/client/src/test/resources/blobs/silly==1,d.jpg diff --git a/services/blob/client/src/test/resources/blobs/silly==1,d.jpg b/services/blob/client/src/test/resources/blobs/silly==1,d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15b559c917ab472b1dea96a54d7e7d864d46766c GIT binary patch literal 56261 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

0Ae(Mk})Xl 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�R2^O3r!TcqM3yqY1tI!$7&SgwIwY$XB|IUU!NcTs%Mye z5P!P3{{R|kE_?C#e}xoMhW_{Y{*;CJ>HZYoEQ*k=I+CLU)TCn?Ee6dy)JmEDYcr;!>&*Brg`5t-GBS$w6LCo>yCduwBXD4f5wg}F;ooa z_;5a>KgoqmFINMx<2f|vk2MF8pZ@?*q~eyPH#z?RJX0i_<^KTd{{Z!>KeG?-8iAm3 z-!$qfVQ?|;(xmf29`&3Nzq(J;nw?z}hL3mG{2GENtDCx0@tUva@yC=ttGD`!c%QfU z(`hPZ`Fao5o5`kmlo#}+%@nk&#(&TG?Mb`&RG%(0OG{DloKo?CSG^mSo0T0q3R)}a zkL?E^>l!8h0BrR9haclr2a6Ua{{TnXA@7vkkNez7mORx|$q)~0M)ertVoE7CvX;!VHv&OiSER(~3u?jCRTt%b-j;A5N+bGNTv zH+$ABZT;W9{(la&J4gu}{&Zrb-B-lty-p?1-#m5 zKf52x#|e-9o0=&Y*0geNZo60V{vXS))~7BC;B@EwipNRe=gr-WbXETVBA3q*bjVUp z)j8;M#yzu1iiPWA_&W9Vs@`|cgZPu{?fzD?WS1j3<2^fn`u%C2J9o~1zDfT8BhsYB zLdLfyo9ybl2v(V72mRldYYyt*pO+O$Zti*zvM*-)uD-b|_r1$@s#3`Ac9HD7etUWP zewC8tvT%JxH*G-1y41Oh4f498aE#x0@7tf?QusgNR%E%bkr|#)$AP%PaVGUYFBnhV z?Hpu}df_~_JnnPt$sgzNtq^cII3ai=ukt;8I`yU5Q1z{m9h9u+%`rvt?2}~7ImnYM z)i#m*c&=9CO}07z09lD1O|73SN%Iq*xt^buZ+UjpO0q>O`D1SV>+`lchELt~=riw5 zxmc!A7xxs1c9D(SaD|UFp{gdVD73pzH!xc>f({Z}i2_T}PwxiLm#YT<0AyCQkXZts zVz;+m2!A9qzCp+F62RlH0CuSDV42Kui-3y9_=(&)@-xr$smyI|c-@ZD{{VY0_rD&# zo#}T|F(IGOlD?5AVNK$D?h1m$ zzCq9L8-JKncdqqOj)R8jiqZ2Yo6I}5r_KA1_r93(2dQo=Cg#E`pEa_OKHjki$j-dufo_N@1pJZ{d+;PKxd;p^J4WVOA6A2?`- z@owyx{vVmMx76l_y!lu!%eSff-McUJ{3-h?Jl5oL5s}6}`u+K+{O>dG4ZhUH@}r3D ze>3>Ea=#%^+1vU9-->6S9!5I;U#~Q@>XJhJ2Rvi&{OYu(Tn(H*;r(jSk^caPIO=iJ z@i^er26fLy_a`6AaipZhQ27_*cp`Y6pp}{JX5^DU+-uA-f6{YX){oHe9^Pp`G23zrrL3W23NlmD5ew3wi-keW*ZtmYoT1qxkf1OF%jiVHl>WZDuYHzkGOj6O(kmi*1 zrsk90l9r<8qug_fu_xTm)Aj!VKc!ZuEhRMX?n$I6Q)ZHulA!{FOM_93-kAJzMrftm zPXjc9Jkyj?QHn;6fg0kZ9rM$*LVEjB(?tgqjrVc*Q}$DKVA9j7Ev@ZM^7-pljylt6 zb4iMUlh>!^Q0%L~btm8aDlg)s&uS{8M!uBKvwjtSVE+I==bCmYX*$+%hEda>^Z3+7 zXV36{ztXjv2~^vu^rg)hs=L^I;C~8#nNuu*X&Y%d+CIEz^Xo+w9^p;hmLKpR=S$^h S+Mw7+M$hU00L4%R75~{>zijsa literal 0 HcmV?d00001 diff --git a/services/common/src/main/java/org/collectionspace/services/common/FileUtils.java b/services/common/src/main/java/org/collectionspace/services/common/FileUtils.java index 9e45b8386..7727fbc69 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/FileUtils.java +++ b/services/common/src/main/java/org/collectionspace/services/common/FileUtils.java @@ -50,6 +50,7 @@ import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.disk.DiskFileItemFactory; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,11 +67,30 @@ public class FileUtils { public static final String DEFAULT_BLOB_NAME = "blob"; private static final String FILE_FORM_FIELD = "file"; + public static String getExtension(File file) { + return getExtension(file.getName()); + } + + // Call this method to get the extension by passing the file name + public static String getExtension(String fileName) { + if (fileName == null) { + return null; + } + + int index = fileName.lastIndexOf("."); + if (index == -1) { + return ""; + } + + return fileName.substring(index + 1); + } + /* * Creates a copy of the srcFile to a temp file */ static public File createTmpFile(File srcFile, String prefix) throws Exception { - File result = createTmpFile(new FileInputStream(srcFile), prefix); + String fileExtension = FileUtils.getExtension(srcFile); + File result = createTmpFile(new FileInputStream(srcFile), prefix, fileExtension); return result; } @@ -83,11 +103,25 @@ public class FileUtils { */ static public File createTmpFile(InputStream streamIn, String filePrefix) { + return createTmpFile(streamIn, filePrefix, null); + } + + /** + * Creates the tmp file. + * + * @param streamIn the stream in + * @param filePrefix the file prefix + * @param fileExtension the file extension + * @return the file + */ + static public File createTmpFile(InputStream streamIn, + String filePrefix, String fileExtension) { File result = null; filePrefix = filePrefix != null ? filePrefix : ""; + fileExtension = fileExtension != null ? "." + fileExtension : ""; String tmpDir = System.getProperty("java.io.tmpdir"); - result = new File(tmpDir, filePrefix + UUID.randomUUID().toString()); + result = new File(tmpDir, filePrefix + UUID.randomUUID().toString() + fileExtension); if (logger.isDebugEnabled() == true) { logger.debug("Creating temp file at:" + result.getAbsolutePath()); } diff --git a/services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoBlobUtils.java b/services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoBlobUtils.java index 613ff631a..c357ffe26 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoBlobUtils.java +++ b/services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoBlobUtils.java @@ -1026,7 +1026,14 @@ public class NuxeoBlobUtils { logger.error("Could not create image blob.", e); throw e; } finally { - + // + // If we created a temp file then we should delete it. + // + if (targetFile.equals(originalFile) == false) { + if (targetFile.delete() == false) { + logger.warn(String.format("Attempt to delete temporary file '%s' failed.", targetFile.getAbsolutePath())); + } + } } return result; -- 2.47.3