0

같은 App Engine 도메인에서 호스팅되는 내 AJAX 집중 웹앱에서 App Engine (Blobstore -> Google Cloud Storage)에 대용량 파일 업로드를 처리하고 싶습니다.Webapp 배경 파일 업로드 App Engine Blobstore

브라우저 자바 스크립트 클라이언트에서 ('create_upload_url'에서 생성 된) App Engine 서버를 호출하고 응답으로 URL을 수신하지만 크로스 도메인 오류가 발생하지 않고 파일을 가져 와서 해당 URL로 업로드하는 방법이 고생했습니다. . Blobstore 수신기에서 CORS 헤더를 설정할 수 없으며 도메인이 내 앱이 제공하는 도메인과 일치하지 않습니다 ('create_upload_url'은 하위 도메인의 접두어에 '1 점'을 추가 함).

의견이 있으십니까?

하나의 아이디어 : "1 점"접두어는 특정 배포 된 버전을 나타내는 것 같습니다. 아마도 URL을 구문 분석하고 그와 같은 접두어를 제거하면 도메인을 동일하게 만들고 해당 URL에 제출할 수 있습니다. 도메인 불일치를 피하십시오.

+0

당신이 있습니까 맞춤 도메인 또는 appspot에서 벗어나고 싶습니까? Create URL은 버전 접두사를 추가하지 않습니다 (http://shell-27.appspot.com/에서 시도하십시오). 당신은 당신의 자바 스크립트에서 특정 버전에 대해 이야기하고 있지 않습니까? 참고로 업로드 URL을 만들 때 Cloud Storage 버킷을 지정할 수 있습니다. –

+0

예, 저는 appspot에서 서비스를 제공하고 있습니다. 당신이 맞습니다. 그 셸에서 똑같은 명령이 '1 점'앞에 붙지는 않습니다 (하지만 여전히 내 경우에는 그렇습니다). 내가 사용하는 명령은 다음과 같습니다. blobstore.create_upload_url ("/ image/upload /", max_bytes_per_blob = 100000000, max_bytes_total = 100000000, rpc = 없음, gs_bucket_name = "버킷 이름") –

+0

Cloud 내에서 'create_upload_url' 엔드 포인트 스크립트, 아마도 이것이 문제입니까? –

답변

1

감사합니다. 이는 요청 처리의 현재 특성으로 인해 발생하며 브레인 스토밍을하는 동안 버그를 고려하여 최선의 방법을 찾아냅니다.

현재, 사용자는이

versionmyappid 응용 프로그램의 기본 버전입니다
https://version-dot-myappid.appspot.com/_ah/spi/MyApi.Method 

에 구글의 API 기반으로 라우팅

https://myappid.appspot.com/_ah/api/myApi/v1/methodpath 

에 요청을합니다.

업데이트 : 이전에 제안 된 해결 방법은 How do I parse a URL into hostname and path in javascript?이 작동하지 않는 것으로 나타났습니다. 이는 create_upload_url을 호출하는 App Engine 인스턴스가 어떤 버전/호스트인지 "알고"있기 때문에 오류가 발생하기 때문입니다.

+0

bossylobster 업로드 URL을 수정해도 작동하지 않습니다. 나는 "version-dot-"을 그대로 사용하는 작업 예제를 수정했으며 URL이 올바르게 변형되었는지 확인했으며 제대로 작동하지 않습니다. http://temporary-blobstore-error.appspot.com/에 303 리디렉션됩니다. 또한 App Engine 로그에 기록 된 항목이나 오류가 없습니다. –

+0

아, 네 말이 맞아, 잘못된 추천으로 나쁘다. 그것은 지금 "깨진"것 같습니다. 우리는 이것을 추적하기 위해 내부적으로 제기 된 버그를 가지고 있으며 패치를 얻기 위해 최선을 다할 것입니다. 이를 반영하기 위해 내 대답이 업데이트되었습니다. – bossylobster

+0

당신이 언급 한 버그입니까? https://code.google.com/p/googleappengine/issues/detail?id=5059 –

0

내 프로그램에서이 문제는의 경우에만 이며, 온라인에서만, dev 서버에서는 발생하지 않습니다. 나는 문제의 근원을 얻었으나, 페이지의 자바 스크립트에서에서 appengine

오 버그 난이 '(UPLOAD_URL = blobstore.create_upload_url : 나는에서 파이썬 코드에 UPLOAD_URL를 얻을

$.ajax({ 
      type: "POST", 
      url: upload_url, 
      data: formData, 
      contentType: false, 
      processData: false 
      }).... 

/uploadDragImage ')

내가 해당 페이지를 호출 할 때 :

: https://comunapp-dot-skilled-999.appspot.com/item?categ=news

AJAX 호출이 완벽하게 작동하지만을 나는 매개 변수를 추가하는 경우

Mixed Content: The page at ' https://comunapp-dot-skilled-999.appspot.com/item?categ=news&luca ' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ' http://temporary-blobstore-error.appspot.com/ '. This request has been blocked; the content must be served over HTTPS.

'&'페이지의 URL의 URL의 생성을 중단 :

https://comunapp-dot-skilled-999.appspot.com/item?categ=news& pippo이

생성 된 UPLOAD_URL는 의미가 될 것으로 보인다, AJAX 호출이 오류가 : blobstore.create_upload_url ('/ uploadDragImage')

참고 : dev에 서버 작품의 proble는 행에 가능한 솔루션 &을 사용하지 않도록하고, 별도의 매개 변수에 다른 뭔가를 사용하는 것입니다

관련 문제