Autodesk forge 使用jQuery删除Bucket中的对象
如何通过jQuery调用选择bucket中的对象。下面的代码显示了我上传文件的示例。目标是以类似的方式进行删除。谢谢Autodesk forge 使用jQuery删除Bucket中的对象,autodesk-forge,Autodesk Forge,如何通过jQuery调用选择bucket中的对象。下面的代码显示了我上传文件的示例。目标是以类似的方式进行删除。谢谢 function uploadFile(node) { $('#hiddenUploadField').click(); $('#hiddenUploadField').change(function () { if (this.files.length == 0) return; var file = this.files[0]; switch (node.type
function uploadFile(node) {
$('#hiddenUploadField').click();
$('#hiddenUploadField').change(function () {
if (this.files.length == 0) return;
var file = this.files[0];
switch (node.type) {
case 'bucket':
var formData = new FormData();
formData.append('fileToUpload', file);
formData.append('bucketKey', node.id);
$.ajax({
url: '/api/forge/oss/objects',
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function (data) {
$('#appBuckets').jstree(true).refresh_node(node);
}
});
break;
}
});
}
您可以在服务器端公开必要的部分(就像对/api/forge/oss/objects端点那样,该端点将文件上传到给定的bucket),然后可以从客户端以类似的方式调用该部分 服务器端:
router.delete('/bucket/:id',函数(req,res){
var tokenSession=新令牌(请求会话)
变量id=请求参数id
var bucket=new forgeSDK.BucketsApi();
deleteBucket(id,tokenSession.getOAuth(),tokenSession.getCredentials())
.then(功能(数据){
res.json({status:“success”})
})
.catch(函数(错误){
res.status(error.statusCode).end(error.statusMessage);
})
})
啊,太好了,谢谢你。您将如何在服务器端用C#解决这个问题?Rigth现在服务器端的上载看起来像:
[HttpPost]
[Route("api/forge/oss/objects")]
public async Task<dynamic> UploadObject()
{
// basic input validation
HttpRequest req = HttpContext.Current.Request;
if (string.IsNullOrWhiteSpace(req.Params["bucketKey"]))
throw new System.Exception("BucketKey parameter was not provided.");
if (req.Files.Count != 1)
throw new System.Exception("Missing file to upload");
string bucketKey = req.Params["bucketKey"];
HttpPostedFile file = req.Files[0];
// save the file on the server
var fileSavePath = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data"),
file.FileName);
file.SaveAs(fileSavePath);
// get the bucket...
dynamic oauth = await OAuthController.GetInternalAsync();
ObjectsApi objects = new ObjectsApi();
objects.Configuration.AccessToken = oauth.access_token;
// upload the file/object, which will create a new object
dynamic uploadedObj;
using (StreamReader streamReader = new StreamReader(fileSavePath))
{
uploadedObj = await objects.UploadObjectAsync(bucketKey,file.FileName,
(int)streamReader.BaseStream.Length, streamReader.BaseStream,"application/octet-
stream");
}
// cleanup
File.Delete(fileSavePath);
return uploadedObj;
}
[HttpPost]
[路由(“api/forge/oss/objects”)]
公共异步任务上载对象()
{
//基本输入验证
HttpRequest req=HttpContext.Current.Request;
if(string.IsNullOrWhiteSpace(req.Params[“bucketKey”]))
抛出新的System.Exception(“未提供BucketKey参数”);
如果(req.Files.Count!=1)
抛出新System.Exception(“缺少要上载的文件”);
字符串bucketKey=req.Params[“bucketKey”];
HttpPostedFile file=req.Files[0];
//将文件保存到服务器上
var fileSavePath=Path.Combine(HttpContext.Current.Server.MapPath(“~/App\u Data”),
文件名);
file.SaveAs(fileSavePath);
//拿桶来。。。
dynamic oauth=等待OAuthController.GetInternalAsync();
ObjectsApi objects=新的ObjectsApi();
objects.Configuration.AccessToken=oauth.access\u令牌;
//上载文件/对象,这将创建一个新对象
动态上传;
使用(StreamReader StreamReader=newstreamreader(fileSavePath))
{
uploadedObj=await objects.UploadObjectAsync(bucketKey,file.FileName,
(int)streamReader.BaseStream.Length,streamReader.BaseStream,“应用程序/八位字节-
);;
}
//清理
Delete(fileSavePath);
返回上载的对象;
}
看看这个示例,它应该包含所有必要的代码: