2013-06-27 3 views
0

사용자가 이미지의 URL을 삽입하고 양식을 제출하여 이미지를 서버에 업로드 할 수 있도록 텍스트 입력이있는 양식이 있습니다.양식을 통해 서버의 이미지를 업데이트하고 제출 후 표시하는 방법은 무엇입니까?

작품을 좋아
if (isset($_POST["cover"])) { 
     imagepng(imagecreatefromstring(file_get_contents($_POST["cover"])), "images/".$hash.".png"); 
    } 

, 문제는 사용자가 새 URL에서 이미지를 업데이트하려고하면 : 그래서 이미지가 업로드 코드 그게 전부 해시로 이름을 변경, PNG로 변환 서버 디렉토리 images/ 에 저장됩니다 .

이미지를 업데이트하기위한 양식에는 value의 실제 변환 및 해시 이미지가 서버에 입력되어 있습니다. 사용자가 입력 URL을 수정하고 업데이트 양식을 제출하면 서버의 이미지를 덮어 씁니다.

이제 캐시 문제가 있습니다. 브라우저 캐시를 정리하지 않고 양식을 제출 한 후에 업데이트 된 이미지를 표시하려면 어떻게해야합니까 ??

세부 사항 페이지 : 업데이트에 대한 index.php?page=details

사용자의 클릭을 업데이트 페이지가 index.php?page=edit

사용자가 양식을 제출로드되고 삽입 된 데이터가 저장되고 세부 index.php?page=details 다시로드 문제의 이미지를 이십 기가 바이트 가 표시됩니다.

+0

새 이미지의 해시 이름도 유지하고 있습니까? –

+0

@Pjack 예, 이름은 그대로 유지되어야합니다. 그 해시가 다른 파일에 첨부되기 때문입니다. –

+0

이미지가 페이지에 어떻게 표시됩니까? 더 많은 코드를 볼 필요가 있을까요? 양식을 제출하면 어떻게됩니까? –

답변

0

src 속성 끝에 ?<?=time()?>을 추가하면 브라우저가 이미지를 다시 요청하고 캐시를 무시하게하는 타임 스탬프가 생성됩니다.

.htaccess를 보면 헤더를 보내어 FilesMatch 지시문을 정의하여 브라우저를 전혀 캐시하지 않도록 할 수 있습니다.

<FilesMatch "\.(png|jpg)$"> 
    FileETag None 
    <IfModule mod_headers.c> 
     Header unset ETag 
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
     Header set Pragma "no-cache" 
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
    </IfModule> 
</FilesMatch> 

답변이 도움이 되었기를 바랍니다.

+0

Im 여전히 그 시간을 구현하려고 애를 씁니다. url은'images/.. $ hash. ".png? =". time()'또는'images/".$ hash.".png? ". = time()'이어야합니다. –

+0

'images/".$ hash.". png? ". time()'= 연산자는 echo의 약자로 사용됩니다. –

관련 문제