Rah*_*twa 66 content-type azure jwplayer
我们在Azure上托管了一个网站.它是基于媒体的,我们正在使用JWPlayer来播放带有HTTP伪流的媒体.媒体文件以3种格式存储在blob上 - mp4,ogg,webm.
问题是媒体文件的内容类型被设置为所有类型的application/octet-stream.因此,媒体播放和进度条中存在一些问题.
如何设置存储在blob上的相应内容类型的文件(如 - video/mp4,video/ogg,video/webm)?
我不希望通过进入blob接口手动为每个文件执行此操作.必须有其他方法来做这件事,我不知道.也许配置文件,设置文件等排序.或者也许是一个代码块,用于为存储在文件夹中的所有文件设置Content-type.
有什么建议?谢谢
use*_*559 120
这应该工作:
var storageAccount = CloudStorageAccount.Parse("YOURCONNECTIONSTRING");
var blobClient = storageAccount.CreateCloudBlobClient();
var blobs = blobClient
.GetContainerReference("thecontainer")
.ListBlobs(useFlatBlobListing: true)
.OfType<CloudBlockBlob>();
foreach (var blob in blobs)
{
if (Path.GetExtension(blob.Uri.AbsoluteUri) == ".mp4")
{
blob.Properties.ContentType = "video/mp4";
}
// repeat ad nauseam
blob.SetProperties();
}
Run Code Online (Sandbox Code Playgroud)
或者设置一个字典,这样你就不必编写一堆if语句.
Meh*_*ral 37
不幸的是,这里接受的答案目前不适用于最新的 SDK (12.x.+)
使用最新的 SDK,应通过 BlobHttpHeaders 设置内容类型。
var blobServiceClient = new BlobServiceClient("YOURCONNECTIONSTRING");
var containerClient = blobServiceClient.GetBlobContainerClient("YOURCONTAINERNAME");
var blob = containerClient.GetBlobClient("YOURFILE.jpg");
var blobHttpHeader = new BlobHttpHeaders();
blobHttpHeader.ContentType = "image/png";
var uploadedBlob = await blob.UploadAsync(YOURSTREAM, blobHttpHeader);
Run Code Online (Sandbox Code Playgroud)
小智 13
这是使用正确的Content-Type将视频上传到Azure Blob存储的工作示例:
public static String uploadFile(
CloudBlobContainer container,String blobname, String fpath) {
CloudBlockBlob blob;
try {
blob = container.getBlockBlobReference(blobname);
File source = new File(fpath);
if (blobname.endsWith(".mp4")) {
System.out.println("Set content-type: video/mp4");
blob.getProperties().setContentType("video/mp4");
}
blob.upload(new FileInputStream(source), source.length());
return blob.getUri().toString();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (StorageException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
使用Azure.Storage.Blogs(12.8.4),我们可以如下设置文件的内容类型。默认情况下,Azure 存储将文件存储在 application/octet-stream 中,如果是 *.svg 文件,则无法在 html 中正确呈现。因此,在上传到 blob 时,我们必须将 *.svg 文件保存在内容类型为 image/svg+xml 的 azure blob 存储中。
下面是我工作的代码示例。
BlobServiceClient blobServiceClient = new BlobServiceClient("CONNECTIONSTRING");
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient("CONTAINERNAME");
BlobClient blobClient = containerClient.GetBlobClient("BLOBNAME");
try
{
Stream stream = file.OpenReadStream();
await blobClient.UploadAsync(stream, true);
blobClient.SetHttpHeaders(new BlobHttpHeaders() { ContentType = file.ContentType });
}
Run Code Online (Sandbox Code Playgroud)
标头上设置的 ContentType 应放置在 blobClient.UploadAsync() 的正下方。
| 归档时间: |
|
| 查看次数: |
47974 次 |
| 最近记录: |