Загрузка Jasny's Bootstrap не работает
Я работаю с jasny Upload, функция довольно приятная, немедленного предварительного просмотра изображения, проблема, с которой я сталкиваюсь: имя файла отображается в дампе как abc.jpg
Заметная разница в простом представлении формы и загрузке Ясны:
В Coldfusion мы загружаем файл и выгружаем файл, он показывает длинную строку, содержащую tmp file
в конце, в то время как в функции загрузки jasny, он показывает имя загруженного файла скажем abc.jpg
так что я думаю, что это проблема:
потому что мой код загрузки Coldfusion всегда говорит одну ошибку:
Error! Unhandled File Upload Error. form field [form.myimage] is not a file field.
В то время как код Jasny's как это внутри form
а также form
имеет энтип multipart/form-data
Код:
<div class="fileupload fileupload-exists" data-provides="fileupload">
<div class="fileupload-new thumbnail" style="width: 200px; height: 150px;">
<img src="http://www.placehold.it/200x150/EFEFEF/AAAAAA&text=no+image" /></div>
<div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 200px; max-height: 150px; line-height: 20px;">
<img src="/img/imageupload.png">
</div>
<div>
<span class="btn btn-file"><span class="fileupload-new">Select image</span>
<span class="fileupload-exists">Change</span><input type="file" name="myimage" /></span>
<a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a>
</div>
</div>
Код Coldfusion:
<cfscript>
variables.validMimeTypes = {'image/jpeg': {extension: 'jpg'},'image/png': {extension: 'png'}};
</cfscript>
<cffunction name="getFileMimeType" returntype="string" output="no">
<cfargument name="filePath" type="string" required="yes">
<cfreturn getPageContext().getServletContext().getMimeType(arguments.filePath)>
</cffunction>
<cfset newDirectory = "sitephotos">
<cfif NOT DirectoryExists(ExpandPath('/img/#newDirectory#/'))>
<cfdirectory action="create" directory="#ExpandPath('/img/#newDirectory#/')#">
</cfif>
<cftry>
<cffile action="upload" filefield="form.myimage" destination="#GetTempDirectory()#" mode="600" accept="#StructKeyList(variables.validMimeTypes)#" result="uploadResult" nameconflict="overwrite" />
<!--- get actual mime type --->
<cfset variables.actualMimeType = getFileMimeType(uploadResult.ServerDirectory & '/' & uploadResult.ServerFile)>
<!--- redundant check with strict="true", does not hurt to double check Adobe --->
<cfif NOT StructKeyExists(variables.validMimeTypes, variables.actualMimeType)>
<cffile action="delete" file="#uploadResult.ServerDirectory#/#uploadResult.ServerFile#" />
<cfset result="Error! Invalid file type (checked)" />
</cfif>
<!--- generate unique filename for move to destination, DO NOT reuse filename sent by user --->
<cfset filename = uploadResult.ServerFileName & "." & variables.validMimeTypes[variables.actualMimeType]["extension"]>
<cfset form.uploadfile = filename>
<cffile action="move" source="#uploadResult.ServerDirectory#/#uploadResult.ServerFile#" destination="#newDirectory#/#filename#" mode="644" />
<cfset imgFileRead = ImageRead('#newDirectory#/#filename#')>
<cfset ImageResize(imgFileRead,'821','460')>
<cfset ImageWrite(imgFileRead,'#newDirectory#/#filename#',1)>
<cfset result = "File Upload Successful">
<cfcatch type="any">
<!--- file is not written to disk if error is thrown --->
<!--- prevent zero length files --->
<cfif FindNoCase("No data was received in the uploaded", cfcatch.message)>
<cfset result="Error! Zero length file" />
<!--- prevent invalid file types --->
<cfelseif FindNoCase("The MIME type or the Extension of the uploaded file", cfcatch.message)>
<cfset result="Error! Invalid file type" />
<!--- prevent empty form field --->
<cfelseif FindNoCase("did not contain a file.", cfcatch.message)>
<cfset result="Error! Empty form field" />
<!---all other errors --->
<cfelse>
<cfset result="Error! Unhandled File Upload Error. #cfcatch.Detail# #cfcatch.Message#" />
</cfif>
</cfcatch>
</cftry>
<cfsavecontent variable="head">
<cfdump var="#result#">
</cfsavecontent>
<cffile action="write" file="#ExpandPath('/error.html')#" output="#head#">
1 ответ
Попробуйте изменить эту строку кода:
<cffile action="upload" filefield="form.myimage"
destination="#GetTempDirectory()#"
mode="600"
accept="#StructKeyList(variables.validMimeTypes)#"
result="uploadResult"
nameconflict="overwrite" />
К этому:
<cffile action="upload" filefield="myimage"
destination="#GetTempDirectory()#"
mode="600"
accept="#StructKeyList(variables.validMimeTypes)#"
result="uploadResult"
nameconflict="overwrite" />
Тег cffile ожидает только имя поля формы myimage
не form.myimage
,