2014-01-31 3 views
0

Я пытаюсь удалить файл, если не электронную таблицу, но продолжаю получать следующую ошибку при загрузке testFile.text: ColdFusion не удалось удалить файл D: \ ColdFusion10 \ cfusion \ runtime \ work \ Catalina \ localhost \ tmp \ testFile.textПочему файл, который я загрузил, заблокирован ColdFusion 10?

Я проверил его не вопрос разрешения, потому что, если я вернусь и запустите код, чтобы попытаться удалить файл снова, он будет работать.

<cffile action="upload" destination="#dest#" filefield="xlsfile" result="upload" nameconflict="makeunique"> 


<cfif upload.fileWasSaved> 
    <cfset theFile = dest & upload.serverFile> 

    <cfif isSpreadsheetFile(theFile)> 
     <cfspreadsheet action="read" src="#theFile#" query="data" headerrow="1"> 
     <cfset showForm = false> 
    <cfelse> 
     <cfscript> 
      thisFile = theFile; 
      fileRead = createObject("java", "java.io.FileInputStream"); 
      thisThread = CreateObject("java", "java.lang.Thread"); 
      loopCT = 1; 
      while(1 EQ 1) 
{ 
    try 
    { 
     fileRead.init(thisFile); 
     break; 
    } 
    catch(any ecpt) 
    { 
     thisThread.sleep(1000); 
    } 
    incrementValue(loopCT); 
    if(loopCT GT 60) 
    { 
     fileRead.close(); 
     return; 
    } 
} 

loopCT = 1; 
while(1 EQ 1) 
{ 
    sizeA = fileRead.available(); 
    thisThread.sleep(1000); 
    sizeB = fileRead.available(); 
    if(sizeA EQ sizeB) 
    { 
     thisThread.sleep(1000); 
     sizeC = fileRead.available(); 
     if(sizeC EQ sizeB) 
     { 
      break; 
     } 
    } 
    incrementValue(loopCT); 

    if(loopCT GT 60) 
    { 
     fileRead.close(); 
     return; 
    } 
} 
fileRead.close(); 

<script type="text/javascript"> 

</script> 


     </cfscript> 

     <!--cffile action="delete" file="#theFile#"--> 
     <cfset errors = "The file was not an Excel file."> 
     <span style="font-size:medium;font-weight:bold; color:red"><p>The file was not an excel file!<p></span> 
     <input type="button" value="TRY AGAIN" class="button" onClick="window.location='bulk_upload.cfm'"> 
     <br><br><br> 
    </cfif> 
    <cfset errors = "The file was not properly uploaded."> 

</cfif> 

+1

Вы попробовали? –

+0

Да. Не работает. мне нужно сделать thisFile = '# theFile #'; – ConfusedDeer

+1

(Изменить) Определите «не работает». Если вы получаете сообщение об ошибке, укажите сообщение об ошибке. Кстати, вам не нужно ничего делать. [Непеременные переменные помещаются в область «переменные» (http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7fd0.html). Любая переменная в этой области может быть доступна из cfml или cfscript внутри одного и того же сценария .cfm. – Leigh

ответ

0

Я столкнулся с точно такой же вопрос касаемо cfimage блокировки файлов и предотвращения удаления. Решение, которое я придумал, следует. Может быть, кто-то может приспособиться к их ситуации:

<cflock name="[lockName]" timeout="5" > 

    <cfcache action="flush"> 

    <!---[] Replace cfimage read function (CF BUG work around) ---> 
    <cfscript> 

     imageObj = createObject("java", "java.awt.Toolkit"); 
     imagetools = imageObj.getDefaultToolkit(); 
     objImage = imagetools.getImage("#fullpath#"); 
     <!---Whatever image I need from the image, or file...---> 
     <!---such as ---- myImageStruct["width"] = objImage.getWidth();---> 

     <!--- and then flush the object---> 
     objImage.flush(); 

    </cfscript> 

</cflock> 
Смежные вопросы