Model Derivative+new directToS3+转换为SVF2静默失败



我有一些存储桶,我已经上传了一些AutoCAD图形。我已经转换为使用directToS3方法上传文件,并且我可以在OSS桶中看到这些文件的URNs。然而,当我试图将文件转换为SVF或SVF2,并将bucketID和URN传递给bucket中的文件时,这些文件并没有转换为SVF。

[HttpPost]
[Route("oss/uploadObject")]
public async Task<dynamic> UploadObject([FromForm]UploadFile input)
{
// save the file on the server
var uploadFolder = Path.Combine(Environment.CurrentDirectory, "Uploads");
if (!Directory.Exists(uploadFolder))
Directory.CreateDirectory(uploadFolder);

var fileSavePath = Path.Combine(uploadFolder, Path.GetFileName(input.fileToUpload.FileName));
dynamic uploadedObj;
using (var stream = new FileStream(fileSavePath, FileMode.Create))
{
await input.fileToUpload.CopyToAsync(stream);
uploadedObj = await BinarytransferClient.UploadToBucket(    input.bucketKey,
Path.GetFileName(input.fileToUpload.FileName),
stream);
}
// cleanup, don't leave the binary on the server
System.IO.File.Delete(fileSavePath);
return uploadedObj;
}

文件上传是通过在这个URL上找到的forge-DirectToS3/BinaryTransferClient来处理的,我唯一的改变是如何传递令牌,因为我已经有了自己的库。上传后查询OSS bucket,结果如下:

[
{
"id": "weuwb5gtwqzvqiykmpvhh8fj2zhslnfk-test1",
"text": "test1",
"type": "bucket",
"hasChildren": true,
"drawings": [
{
"id": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6d2V1d2I1Z3R3cXp2cWl5a21wdmhoOGZqMnpoc2xuZmstdGVzdDEvNjExNTEwLmR3Zw==",
"text": "611510.dwg",
"type": "drawing",
"hasChildren": false,
"drawings": null,
"project": null
}
],
"project": null
},
{
"id": "weuwb5gtwqzvqiykmpvhh8fj2zhslnfk-test2",
"text": "test2",
"type": "bucket",
"hasChildren": true,
"drawings": [
{
"id": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6d2V1d2I1Z3R3cXp2cWl5a21wdmhoOGZqMnpoc2xuZmstdGVzdDIvNjA1NzAyLmR3Zw==",
"text": "605702.dwg",
"type": "drawing",
"hasChildren": false,
"drawings": null,
"project": null
}
],
"project": null
},
{
"id": "weuwb5gtwqzvqiykmpvhh8fj2zhslnfk-test4",
"text": "test4",
"type": "bucket",
"hasChildren": true,
"drawings": [
{
"id": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6d2V1d2I1Z3R3cXp2cWl5a21wdmhoOGZqMnpoc2xuZmstdGVzdDQvODgxMTYuZHdn",
"text": "88116.dwg",
"type": "drawing",
"hasChildren": false,
"drawings": null,
"project": null
}
],
"project": null
},
{
"id": "weuwb5gtwqzvqiykmpvhh8fj2zhslnfk638009921667451964-test3",
"text": "weuwb5gtwqzvqiykmpvhh8fj2zhslnfk638009921667451964-test3",
"type": "bucket",
"hasChildren": true,
"drawings": [
{
"id": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6d2V1d2I1Z3R3cXp2cWl5a21wdmhoOGZqMnpoc2xuZms2MzgwMDk5MjE2Njc0NTE5NjQtdGVzdDMvNjExNTEwLmR3Zw==",
"text": "611510.dwg",
"type": "drawing",
"hasChildren": false,
"drawings": null,
"project": null
}
],
"project": null
}
]

最后,转换代码:

[HttpPost]
[Route("modelderivative/TranslateObject")]
public async Task<dynamic> TranslateObject([FromBody] TranslateObjectModel objModel)
{
dynamic oauth = await OAuthController.GetInternalAsync();
// prepare the payload
List<JobPayloadItem> outputs = new List<JobPayloadItem>()
{
new JobPayloadItem(
JobPayloadItem.TypeEnum.Svf2,
new List<JobPayloadItem.ViewsEnum>()
{
JobPayloadItem.ViewsEnum._2d,
JobPayloadItem.ViewsEnum._3d
})
};
JobPayload job;
job = new JobPayload(new JobPayloadInput(objModel.objectName), new JobPayloadOutput(outputs));
// start the translation
DerivativesApi derivative = new DerivativesApi();
derivative.Configuration.AccessToken = oauth.access_token;
dynamic jobPosted = await derivative.TranslateAsync(job, true);
return jobPosted;
}
/// <summary>
/// Model for TranslateObject method
/// </summary>
public class TranslateObjectModel
{
public string bucketKey { get; set; }
public string objectName { get; set; }
}

传递上面的任何一个bucketKey、objectID组合都不会产生任何结果。我从后端获得了成功,但我没有真正的衍生产品,或者如果我这样做了,我不知道URL是什么。我到底缺少什么?也许我需要进行另一个调用,以便从其他位置/API调用获得SVF的不同URN?

当手动上传的文件翻译失败时,有助于(1(确认上传对象的字节大小与原始文件的大小匹配,以及(2(下载上传的文件并检查内容是否正确。

此外,请注意,我们的SDK现在包含direct-s3上传/下载功能,因此您可以从那里使用它:https://forge.autodesk.com/blog/direct-s3-upload-and-download-sdks.

最新更新