2011-03-23 2 views
0

고객이 계약서 사본을 다운로드 할 수 있도록 상당히 안전한 방문 페이지를 만들었습니다.PHP/AJAX로 동적 파일로드 문제가 발생했습니다

retrieve.php를 누르면 EULA (jQuery Dialog)가 나타납니다. 서명하고 동의하면 jQuery 대화 상자가 사라집니다.

서버에 AJAX 호출을 보내 해시 된 파일 이름을 가져 오면 브라우저에서 PDF를 안전하게 볼 수있는 링크가 생성됩니다.

이제는 회사에서 JPG 버전 계약을 추가하기를 원합니다. 계약서는 당사에 어떤 서비스를 사용 하느냐에 따라 2-3 페이지가 있습니다.

내가 겪고있는 문제는 어떻게 jpg 버전에 맞는 링크를 만들 수 있습니까? 모든 것은 AJAX에서 이루어지며 AJAX에서 많은 수의 이미지를 반환하지 않는 것을 선호합니다. . JPG

사람이 할 수있는 동적 인 방법이 있나요 -

이미지 이름은 (PDF와 같은 해시)입니까?

PHP에서이 작업을 수행했지만 클라이언트 측에서 링크 생성을 실행하고 있기 때문에 작동하지 않습니다.

내 질문은 : 나는 3, 4 개의 링크 (pdf +하지만 많은 jpg가 있음)를 JSON을 통해 반환하겠습니까?
json에서 페이지 수를 다시 전달하고 링크를 동적으로 만들겠습니까? 더 좋은 해결책이 있습니까?

일부 코드 :

$.ajax({ type: 'POST', 
url: 'getContractAJAX.php', 
    data: { 
     'pin' : pin.val(), 
     'name' : signature.val().toUpperCase(), 
     'lead' : '<?php echo $_GET['lead']; ?>' 
    }, /* end data */ 
    cache: false, 
    success: function(contractId) { 
     if (contractId['success'] == true) { 
     contractExpireDate = new Date(contractId['contractExpDate']); 
     today = new Date(); 
     // Log the signature. 
     $.post('log.php', { 
      signature: $("#electronicSignature").val().toUpperCase(), 
     pin: $("#eSpin").val(), 
      lead: '<?php echo $_GET['lead']; ?>', 
      method: 'SIGNATURE'}, 
      function(log) { 
      if(log['success'] == true) {   

      /* DOWNLOAD IMAGES LINKS */ 
      $("#downloadLinks").prepend("<a href='#' onclick='log(\""+contractId['contract']+"\", \"DOWNLOAD\");'><img src='img/btnDownloadPdf.png' alt='Downdload PDF' /><br />Download Contract in Adobe &copy; PDF</a>"); 

     } else { 
      alert("There was a problem! Please contact customer support."); 
      showDisclosure(); 
     } /* end else */ 
              }); /* end function(log) */ 
              $("#dialog-confirm").dialog("close"); 

getContractAJAX.php :

if (isset($_POST['pin']) && isset($_POST['name']) && isset($_POST['lead'])){ 
    $pin = $_POST['pin']; 
    $name = trim($_POST['name']); 
    $email = $converter->decode($_POST['lead']); 



    /* 
    * 
    * 
    * PDO 
    * 
    * 
    */ 
    $stmt = $dbh->prepare("SELECT contract, contractExpireDate 
          FROM users 
          WHERE emailAddress=:email AND 
            pin=:pin AND 
            concat(firstName, ' ', lastName) LIKE :name AND 
            contractExpireDate > NOW() 
          LIMIT 1"); 

    if ($stmt->bindParam(':email', $email, PDO::PARAM_STR) && 
     $stmt->bindParam(':pin', $pin, PDO::PARAM_INT) && 
     $stmt->bindParam(':name', $name, PDO::PARAM_STR)) { 
     $stmt->execute(); 

     $found = 0; 
     foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $el) { 
      $found++; 
      $contract = $el['contract']; 
      $contractExpDate = $el['contractExpireDate']; 
     } 
     $stmt = null; 
    }    

    if ($found > 0) { 
     $success = true; 
    } else { 
     $success = false; 
     $error = "NO MATCHES FOUND >>> $email >>> $pin >>> $name"; 
    } 


}else{ 
    $success = false; 
    $error = "NOT ALL PASSED"; 
} 

header('Content-type: application/json'); 
$json = array("contract" => $contract, 
       "contractExpDate" => $contractExpDate, 
       "success" => $success, 
       "messege" => $error); 
echo json_encode($json); 
+0

일부 코드를 알려주세요. 우리는 ur 코드를 알아 내는데 천재가 아니다. – Neal

+0

이미지 이름은 (pdf와 같은 해시) - (page #)이어야한다. jpg ... 나는 그것을 표지판보다 크고 덜 넣고 .... 걸러 낸다. – Mark

+0

show 어떤 코드! – Neal

답변

0

왜 하나의 압축을 반환하지 여기 서버에 정보를 전송 얻는 AJAX 전화입니다 다음 링크를 작성 모든 이미지 파일 (타르, 지퍼 등)? 그러면 한 번에 다운로드 할 수 있고 다운로드 속도가 빨라집니다.

+0

정확히 사용자 친화적이지 않습니다. 사장님은 그가 원하는 것에 대해 매우 구체적입니다. 그는 PDF에 대한 링크 또는 JPG 버전의 2 ~ 3 페이지에 대한 링크를 원합니다. – Mark

+0

@ 마크 사용자 친화적이지 않은 방법을 알지 못합니다. 그러나 제약 조건을 고려하고 코드를 살펴보면 JSON에 'images'키 또는 무언가를 추가하고 다운로드에 연결된 축소판 목록을 출력합니다. –

관련 문제