ไฟล์คลาวด์ของ Rackspace ส่งคืนแอปพลิเคชัน/ไม่รู้จักเป็นประเภท mime เมื่ออัปโหลดด้วย Jclouds

โดยพื้นฐานแล้วฉันมีโค้ดนี้ซึ่งอัปโหลดจาวาสคริปต์และเนื้อหาอื่น ๆ ไปยัง Rackspace โดยใช้ Jclouds:

SwiftObject obj = cloudFilesClient.newSwiftObject();
obj.getInfo().setName(name);
obj.getInfo().setContentType(contentType);
obj.setPayload(payloadFile);
cloudFilesClient.putObject(container, obj);

ฉันสังเกตเห็นว่า Chrome บ่นเกี่ยวกับสคริปต์ที่ถูกถ่ายโอนด้วย text/plain ดังนั้นจึงเตรียมที่จะตรวจสอบ curl -I รายงานแทน: Content-Type: application/unknown

ฉันใช้ Google มากมายและพยายามค้นหาเบาะแสบางอย่าง และฉันได้ลองแล้ว:

  • ไม่ได้ตั้งค่าประเภทเนื้อหาเลย
  • การตั้งค่าสตริงว่าง (พบข่าวลือเกี่ยวกับเรื่องนั้นที่ไหนสักแห่ง)
  • การตั้งค่าเป็น application/javascript (ถูกต้อง)
  • การตั้งค่าเป็น text/javascript (ผิด แต่พบบ่อย)
  • obj.getAllHeaders().put("Content-Type", contentType);

เมื่อก่อนเราเคยอัปโหลดด้วย HTTP พื้นฐาน วิธีนี้ใช้งานได้โดยไม่ต้องตั้งค่าใดๆ ด้วยตนเองเลย


person Stoffe    schedule 03.12.2013    source แหล่งที่มา


คำตอบ (1)


ในที่สุดก็จัดการหามันได้ด้วยการขุดซอร์สโค้ด - ใช้งานได้:

FilePayload payload = new FilePayload(uploadableFile.localPath.toFile());
payload.getContentMetadata().setContentType(uploadableFile.contentType);
obj.setPayload(payload);

เผื่อมีใครตามหาเรื่องนี้ในอนาคต โพส Q&A ไว้เลย

person Stoffe    schedule 03.12.2013
comment
คุณมี JClouds เวอร์ชันที่ใช้งานได้ซึ่งแก้ไขปัญหานี้หรือตัวอย่างวิธีแก้ไขเวอร์ชันของฉัน ขอบคุณ. - person Josh; 09.05.2016
comment
@ Josh ตัวอย่างนั้นในคำตอบคือสิ่งที่ใช้ได้ผลสำหรับฉันในขณะที่เขียน หลังจากนั้นไม่นาน เราก็เลิกใช้ Rackspace ด้วยเหตุผลอื่น ดังนั้นฉันจึงไม่อยู่ในความเกี่ยวข้องอีกต่อไป ขอโทษ! - person Stoffe; 10.05.2016