2015-07-21 2 views
0

Я создаю способ добавления изображения в карточку из файла и сохранения его в настраиваемом свойстве. Это прекрасно работает.Проверьте, является ли файл изображением

answer file tImageDialogTranslations with type "Images|jpg|jpeg|png" 
if it is not empty then 
    put it into tMyImagePath 

    put url("binfile:" & tMyImagePath) into tMyImage 
    put base64encode(tMyImage) into tBase64ImgData 

    # store image in cust prop 
    set the cImageBlob of img "img_collection_picture" to tBase64ImgData 

    #show image 
    put base64decode(tBase64ImgData) into tShowImage 
    set the text of image "img_collection_picture" to tShowImage 
end if 

К сожалению, когда я добавить * в диалоге Файл ответов я также могу выбрать другой тип файла, как txt, который затем хранится в настраиваемого свойства, но не отображается в изображении.

Как я могу проверить, действительно ли пользователь выбрал действительный файл изображения?

ответ

2

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

+0

Спасибо. Я думаю, что могу использовать что-то вроде 'put binarydecode (« H8 », tMyImage, tMyImageHex)' , а затем проверить несколько шестнадцатеричных значений, которые я принимаю – Tate83

0

я понял это и думал, что я разделю всю соответствующую часть:

answer file tImageDialogTranslations with type "Images|jpg,jpeg,png,gif" 
if it is not empty then 
    put it into tMyImagePath 
    put url("binfile:" & tMyImagePath) into tMyImage 
    put binarydecode("H8",tMyImage,tMyImageHex) -- to check if it is actually an image 
    put base64encode(tMyImage) into tBase64ImgData 


    set the itemdel to comma 
    if tMyImageHex is among the items of "ffd8ffe0,47494638,89504e47" then 

    ### store image in custom property 
    set the cImageBlob of img "img_collection_picture" to tBase64ImgData 

    ### now display image in field 
    put base64decode(tBase64ImgData) into tShowImage 
    set the text of image "img_collection_picture" to tShowImage 

    else 
    # do nothing/error 100499 
    answer "Error 100499: Please choose an image file. " 
    end if 

else 
    # do nothing since no file was chosen 
end if