HTML formu kullanarak bir pakete nesne yüklemek için PostObject işlemini çağırın.
Kullanım notları
HTML formu ile yükleme işlemi için
oss:PutObjectizni gerekir. RAM kullanıcısına özel bir ilke ekleyin.PostObject ile yüklenen nesnelerin boyutu 5 GB'ı aşamaz.
PostObject isteği paket üzerinde yazma izni gerektirir. Paket Erişim Kontrol Listesi (ACL) public-read-write ise imza bilgisi gerekmez. Aksi takdirde OSS, istekteki imzayı doğrular.
PutObject'ten farklı olarak PostObject, ilkeyi imzalamak için AccessKey secret kullanır. Oluşturulan imza dizesi, OSS tarafından doğrulanan Signature form alanının değeridir.
Form URL'si, nesne adı içermeyen paket alan adıdır. İstek satırı
POST / HTTP/1.1şeklindedir;POST /ObjectName HTTP/1.1değildir.Bir POST isteğinin başlık veya URL bölümünde imza bilgisi bulunuyorsa OSS bu bilgiyi kontrol etmez.
Sürüm oluşturma
Pakette sürüm oluşturma etkinleştirilmişse OSS, yüklenen nesne için benzersiz bir sürüm kimliği oluşturur ve bunu x-oss-version-id yanıt başlığında döndürür.
Sürüm oluşturma askıya alınmışsa OSS, yüklenen nesne için null bir sürüm kimliği oluşturur ve bunu x-oss-version-id yanıt başlığında döndürür. Her nesne için yalnızca bir null sürüm kimliğine izin verilir.
İstek sözdizimi
POST / HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
User-Agent: browser_data
Content-Length: ContentLength
Content-Type: multipart/form-data; boundary=9431149156168
--9431149156168
Content-Disposition: form-data; name="key"
key
--9431149156168
Content-Disposition: form-data; name="success_action_redirect"
success_redirect
--9431149156168
Content-Disposition: form-data; name="Content-Disposition"
attachment;filename=oss_download.jpg
--9431149156168
Content-Disposition: form-data; name="x-oss-meta-uuid"
myuuid
--9431149156168
Content-Disposition: form-data; name="x-oss-meta-tag"
mytag
--9431149156168
Content-Disposition: form-data; name="OSSAccessKeyId"
access-key-id
--9431149156168
Content-Disposition: form-data; name="policy"
encoded_policy
--9431149156168
Content-Disposition: form-data; name="Signature"
signature
--9431149156168
Content-Disposition: form-data; name="file"; filename="MyFilename.jpg"
Content-Type: image/jpeg
file_content
--9431149156168
Content-Disposition: form-data; name="submit"
Upload to OSS
--9431149156168--
İstek başlıkları
PostObject istek gövdesi multipart/form-data kodlaması kullanır. Parametreleri HTTP başlıklarında ileten PutObject'ten farklı olarak PostObject, parametreleri gövdedeki form alanları olarak iletir.
PostObject, x-oss-tagging başlığını desteklemez. PostObject işlemi tamamlandıktan sonra nesneyi etiketlemek için PutObjectTagging çağrısı yapın.
|
Ad |
Tür |
Zorunlu |
Açıklama |
|
Content-Type |
Dize |
Hayır |
Tarayıcıların dosyayı nasıl okuyacağını belirleyen dosya türü ve web sayfası kodlaması. Post işlemi sırasında gönderilen formun Sınır (boundary), form tarafından oluşturulan rastgele bir dizedir. Bunu belirtmeniz gerekmez. SDK'lar bu değeri otomatik olarak oluşturur. |
Bu işlem ayrıca Host ve Date gibi Ortak istek başlıklarını da kullanır.
Form öğeleri
Aşağıdaki tabloda V1 ve V4 imzaları için ortak olan form öğeleri açıklanmaktadır. Yalnızca V4 imzalarına özgü form öğeleri hakkında bilgi için bkz. V4 imza formu. Yalnızca V1 imzalarına özgü form öğeleri hakkında bilgi için bkz. V1 imza formu.
Dosya alanı son form alanı olmalıdır. Diğer form alanları herhangi bir sırada olabilir.
Bir form alanının anahtarı 8 KB'yi, değeri ise 2 MB'yi aşamaz.
|
Ad |
Tür |
Zorunlu |
Açıklama |
|
Cache-Control |
Dize |
Hayır |
Nesne indirildiğinde RFC 2616 standardında tanımlandığı şekilde önbelleğe alma davranışı. Varsayılan değer: yok. |
|
Content-Disposition |
Dize |
Hayır |
RFC 2616 standardında tanımlandığı şekilde nesnenin indirme dosya adı. Varsayılan değer: yok. |
|
Content-Encoding |
Dize |
Hayır |
İndirildiğinde nesnenin içerik kodlaması (RFC 2616). Varsayılan değer: yok. |
|
Expires |
Dize |
Hayır |
RFC 2616 standardında tanımlandığı şekilde önbellek sona erme süresi. Varsayılan değer: yok. |
|
policy |
Dize |
Evet, koşullu |
İstek form alanlarının geçerliliğini belirtir. Policy alanı içermeyen bir istek anonim olarak değerlendirilir ve yalnızca public-read-write paketlere erişebilir. Varsayılan değer: yok. Kısıtlama: Paket public-read-write değilse veya OSSAccessKeyId ya da Signature sağlanmışsa zorunludur. Önemli
Form ve ilke UTF-8 olarak kodlanmalıdır. Policy form alanı ayrıca Base64 ile kodlanmalıdır. |
|
x-oss-server-side-encryption-key-id |
Dize |
Hayır |
KMS tarafından yönetilen müşteri ana anahtarı (CMK). Yalnızca x-oss-server-side-encryption KMS olarak ayarlandığında geçerlidir. |
|
x-oss-content-type |
Dize |
Hayır |
Tarayıcıların dosya form alanına otomatik olarak eklediği Content-Type değerini geçersiz kılar. Content-Type belirtimi için bu öğe en yüksek önceliğe sahiptir. Öncelik sırası: x-oss-content-type > Dosya form alanının Content-Type değeri Varsayılan değer: yok. |
|
x-oss-forbid-overwrite |
Dize |
Hayır |
PostObject işlemi sırasında aynı ada sahip bir nesnenin üzerine yazılıp yazılmayacağını belirtir. Sürüm oluşturma etkinleştirildiğinde veya askıya alındığında x-oss-forbid-overwrite yoksayılır ve aynı adlı nesnelerin üzerine yazılabilir.
x-oss-forbid-overwrite başlığı saniyedeki sorgu sayısını (QPS) düşürür. x-oss-forbid-overwrite kullanımınız 1.000 QPS'i aşarsa teknik destekle iletişime geçin. |
|
x-oss-object-acl |
Dize |
Hayır |
Yüklenen nesne için erişim izinleri. Geçerli değerler:
Erişim izinleri Nesne ACL konusunda açıklanmıştır. |
|
x-oss-storage-class |
Dize |
Hayır |
Nesnenin depolama sınıfını belirtir. Paket depolama sınıfından bağımsız olarak yüklenen nesne, belirttiğiniz sınıfı kullanır. Örneğin, IA bir paket için x-oss-storage-class değerini Standard olarak belirtmek nesneyi Standard olarak depolar. Geçerli değerler:
|
|
key |
Dize |
Evet |
Yüklenecek nesnenin adı. Adı kodlamayın. Ad bir yol içeriyorsa (örneğin Varsayılan değer: yok. |
|
success_action_redirect |
Dize |
Hayır |
Yükleme başarılı olduktan sonra istemcinin yönlendirileceği URL. Belirtilmezse yanıt davranışı success_action_status tarafından belirlenir. Başarısızlık durumunda OSS yeniden yönlendirme yapmadan bir hata döndürür. Varsayılan değer: yok. |
|
success_action_status |
Dize |
Hayır |
success_action_redirect belirtilmediğinde başarılı bir yüklemenin ardından döndürülen HTTP durum kodu. Geçerli değerler: 200, 201 ve 204 (varsayılan).
|
|
x-oss-meta-* |
Dize |
Hayır |
Kullanıcı tanımlı meta veriler. Varsayılan değer: yok. x-oss-meta- önekiyle başlayan form alanları kullanıcı meta verileri olarak depolanır. Örnek: Not
Bir nesne birden fazla böyle parametreye sahip olabilir ancak tüm kullanıcı meta verilerinin toplam boyutu 8 KB'yi aşamaz. |
|
x-oss-security-token |
Dize |
Hayır |
STS güvenlik belirteci. Yalnızca imzalı bir URL oluşturmak için STS kullanırken gereklidir. Bir belirteç almak için AssumeRole işlemini çağırın. Varsayılan değer: yok. |
|
file |
Dize |
Evet |
Dosya veya metin içeriği. İçeriği kodlamayın. Tarayıcı, dosya türüne göre Content-Type değerini ayarlayarak sizin ayarlarınızı geçersiz kılar. Her istekte yalnızca bir dosya yüklenebilir. Varsayılan değer: yok. Önemli
Dosya alanı son form alanı olmalıdır. |
Yanıt başlıkları
|
Ad |
Tür |
Örnek |
Açıklama |
|
x-oss-server-side-encryption |
Dize |
KMS |
İstekte x-oss-server-side-encryption belirtilmişse döndürülür. Kullanılan şifreleme algoritmasını gösterir. |
|
Content-MD5 |
Dize |
1B2M2Y8AsgTpgAmY7PhC**** |
Dosyanın MD5 karma değeri. Önemli
Bu, yüklenen dosyanın MD5 karma değeridir; yanıt gövdesinin MD5 karma değeri değildir. |
|
x-oss-hash-crc64ecma |
Dize |
316181249502703**** |
Dosyanın CRC-64 değeri. |
|
x-oss-version-id |
Dize |
CAEQNhiBgMDJgZCA0BYiIDc4MGZjZGI2OTBjOTRmNTE5NmU5NmFhZjhjYmY0**** |
Yüklenen nesnenin sürüm kimliği. Yalnızca sürüm oluşturma özelliği etkin olan paketler için döndürülür. |
Bu işlem ayrıca Date ve x-oss-request-id gibi Ortak yanıt başlıklarını da döndürür.
Yanıt öğeleri
|
|
|
|
|
|
|
Post isteğinin sonucunu depolayan kapsayıcı. Alt düğümler: Bucket, ETag, Key ve Location |
|
|
|
Paketin adı. Üst düğüm: PostResponse |
|
|
|
Yüklenen nesnenin ETag değeri. PostObject yüklemeleri için ETag benzersiz bir tanımlayıcıdır ancak içeriğin MD5 karma değeri değildir. İçeriğin değişip değişmediğini doğrulamak için kullanın. Üst düğüm: PostResponse |
|
|
|
Yeni oluşturulan nesnenin URL'si. Üst düğüm: PostResponse |
Örnekler
-
İstek örneği:
POST / HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 344606 Content-Type: multipart/form-data; boundary=9431149156168 --9431149156168 Content-Disposition: form-data; name="key" /user/a/objectName.txt --9431149156168 Content-Disposition: form-data; name="success_action_status" 200 --9431149156168 Content-Disposition: form-data; name="Content-Disposition" content_disposition --9431149156168 Content-Disposition: form-data; name="x-oss-meta-uuid" uuid --9431149156168 Content-Disposition: form-data; name="x-oss-meta-tag" metadata --9431149156168 Content-Disposition: form-data; name="OSSAccessKeyId" 44CF9590006BF252**** --9431149156168 Content-Disposition: form-data; name="policy" eyJleHBpcmF0aW9uIjoiMjAxMy0xMi0wMVQxMjowMDowMFoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDEwNDg1NzYwXSx7ImJ1Y2tldCI6ImFoYWhhIn0sIHsiQSI6ICJhIn0seyJrZXkiOiAiQUJDIn1dfQ== --9431149156168 Content-Disposition: form-data; name="Signature" kZoYNv66bsmc10+dcGKw5x2P**** --9431149156168 Content-Disposition: form-data; name="file"; filename="MyFilename.txt" Content-Type: text/plain abcdefg --9431149156168 Content-Disposition: form-data; name="submit" Upload to OSS --9431149156168-- -
Yanıt örneği:
HTTP/1.1 200 OK x-oss-request-id: 61d2042d-1b68-6708-5906-33d81921362e Date: Fri, 24 Feb 2014 06:03:28 GMT ETag: "5B3C1A2E053D763E1B002CC607C5****" Connection: keep-alive Content-Length: 0 x-oss-hash-crc64ecma: 316181249502703**** Content-MD5: 1B2M2Y8AsgTpgAmY7PhC**** Server: AliyunOSS
SDK
Desteklenen SDK'lar:
Hata kodları
|
Hata kodu |
HTTP durum kodu |
Açıklama |
|
FieldItemTooLong |
400 |
Form alanı anahtarının boyutu 8 KB'yi, form alanı değerinin boyutu ise 2 MB'yi aşamaz. |
|
InvalidArgument |
400 |
Paket ACL'sinden bağımsız olarak OSSAccessKeyId, policy veya Signature alanlarından herhangi biri sağlanırsa üçü de gereklidir. Herhangi biri eksikse bu hata döndürülür. |
|
InvalidDigest |
400 |
İstekteki Content-MD5 değeri, OSS tarafından istek gövdesi için hesaplanan MD5 karma değeriyle eşleşmiyor. |
|
EntityTooLarge |
400 |
İstek gövdesi 5 GB boyut sınırını aşıyor. |
|
InvalidEncryptionAlgorithmError |
400 |
x-oss-server-side-encryption değeri AES256 veya KMS değil. |
|
IncorrectNumberOfFilesInPOSTRequest |
400 |
Bir PostObject isteği yalnızca bir dosya form alanı içerebilir. |
|
FileAlreadyExists |
409 |
Aynı ada sahip bir nesne mevcut ve x-oss-forbid-overwrite true olarak ayarlanmış. |
|
KmsServiceNotEnabled |
403 |
x-oss-server-side-encryption KMS olarak ayarlanmış ancak önceden bir KMS paketi satın almamışsınız. |
|
FileImmutable |
409 |
Paket korumalı ve veriler silinemez veya değiştirilemez. |
|
MethodNotAllowed |
405 |
HTTP istek yöntemi desteklenmiyor. İstek yönteminin, başlıkların, URL protokolünün, alan adının ve yolun doğru olduğunu doğrulayın. |
POST ilkesi
Policy form alanı, HTML formu yüklemeleri için kısıtlamalar (paket adı, nesne öneki, geçerlilik süresi, izin verilen HTTP yöntemleri, yükleme boyutu sınırları ve içerik türleri dahil) belirten JSON biçimli bir güvenlik ilkesidir.
V4 imza ilkesi: POST isteği V4 imza ilkesi.
V1 imza ilkesi: POST isteği V1 imza ilkesi.
POST imzası
Her PostObject isteği, kimlik doğrulama için bir imza içermelidir.
V4 imzası: POST isteği V4 imzası.
V1 imzası: POST isteği V1 imzası.
SSS
"Your proposed upload exceeds the maximum allowed size" hatası alınırsa ne yapmalıyım?
Neden: Yüklenen dosyanın boyutu content-length-range tarafından belirtilen aralığın dışındadır.
Çözüm: Yüklenen dosya için bayt cinsinden izin verilen minimum ve maksimum boyutları belirtmek üzere content-length-range kullanın. Örneğin, 1 GB'lık bir dosya yüklemek için content-length-range değerini ["content-length-range", 1, 1073741824] olarak ayarlayabilirsiniz.