-
跪求大神帮忙解决!!!以下是我从华为为下载的编程关于 “展示了分段并发上传大对象的用法” 。但是当我们跑完代码, 在模拟的手机,它显示“Create a demo busket for demo Error message: The location contraint is incompatible for the region specific endpoint this request was sent to. Error code: IllegalLocationConstraintExceprtion Request ID: 000000175.... Host ID:wQQYK..."public class MainActivity extends androidx.appcompat.app.AppCompatActivity{ private static final String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; private static final String ak = "E5DVZAAK95..."; private static final String sk = "PluwDOGzcWcFXXYdlNjsnITWrB4Hud7..."; private static String bucketName = "chenzi"; private static String objectKey = "my-obs-object-key-demo"; private static ExecutorService executorService = Executors.newFixedThreadPool(5); private static List<PartEtag> partETags = Collections.synchronizedList(new ArrayList<PartEtag>()); private static ObsClient obsClient; private static StringBuffer sb = new StringBuffer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout2); //Toast.makeText(this, "hUAWEItYR", Toast.LENGTH_LONG).show(); ObsConfiguration config = new ObsConfiguration(); config.setSocketTimeout(30000); config.setConnectionTimeout(10000); config.setEndPoint(endPoint); /* * Constructs a obs client instance with your account for accessing OBS */ obsClient = new ObsClient(ak, sk, config); final TextView tv = (TextView)findViewById(R.id.tv); tv.setText("Click to start test"); // Toast.makeText(this, "hUAWEItYR", Toast.LENGTH_LONG).show(); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv.setClickable(false); AsyncTask<Void, Void, String> task = new ConcurrentUploadPartTask(); task.execute(); } }); } private static class PartUploader implements Runnable { private File sampleFile; private long offset; private long partSize; private int partNumber; private String uploadId; public PartUploader(File sampleFile, long offset, long partSize, int partNumber, String uploadId) { this.sampleFile = sampleFile; this.offset = offset; this.partSize = partSize; this.partNumber = partNumber; this.uploadId = uploadId; } @Override public void run() { try { UploadPartRequest uploadPartRequest = new UploadPartRequest(); uploadPartRequest.setBucketName(bucketName); uploadPartRequest.setObjectKey(objectKey); uploadPartRequest.setUploadId(this.uploadId); uploadPartRequest.setFile(this.sampleFile); uploadPartRequest.setPartSize(this.partSize); uploadPartRequest.setOffset(this.offset); uploadPartRequest.setPartNumber(this.partNumber); UploadPartResult uploadPartResult = obsClient.uploadPart(uploadPartRequest); sb.append("Part#" + this.partNumber + " done\n\n"); partETags.add(new PartEtag(uploadPartResult.getEtag(), uploadPartResult.getPartNumber())); } catch (Exception e) { e.printStackTrace(); } } } class ConcurrentUploadPartTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { try { /* * Create bucket */ sb.append("Create a new bucket for demo\n\n"); obsClient.createBucket(bucketName); /* * Claim a upload id firstly */ String uploadId = claimUploadId(); sb.append("Claiming a new upload id " + uploadId + "\n\n"); long partSize = 5 * 1024 * 1024l;// 5MB File sampleFile = createSampleFile(); long fileLength = sampleFile.length(); long partCount = fileLength % partSize == 0 ? fileLength / partSize : fileLength / partSize + 1; if (partCount > 10000) { throw new RuntimeException("Total parts count should not exceed 10000"); } else { sb.append("Total parts count " + partCount + "\n\n"); } /* * Upload multiparts to your bucket */ sb.append("Begin to upload multiparts to OBS from a file\n\n"); for (int i = 0; i < partCount; i++) { long offset = i * partSize; long currPartSize = (i + 1 == partCount) ? fileLength - offset : partSize; executorService.execute(new PartUploader(sampleFile, offset, currPartSize, i + 1, uploadId)); } /* * Waiting for all parts finished */ executorService.shutdown(); while (!executorService.isTerminated()) { try { executorService.awaitTermination(5, TimeUnit.SECONDS); } catch (InterruptedException e) { e.printStackTrace(); } } /* * Verify whether all parts are finished */ if (partETags.size() != partCount) { throw new IllegalStateException("Upload multiparts fail due to some parts are not finished yet"); } else { sb.append("Succeed to complete multiparts into an object named " + objectKey + "\n\n"); } /* * View all parts uploaded recently */ listAllParts(uploadId); /* * Complete to upload multiparts */ completeMultipartUpload(uploadId); return sb.toString(); } catch (ObsException e) { sb.append("\n\n"); sb.append("Response Code:" + e.getResponseCode()) .append("\n\n") .append("Error Message:" + e.getErrorMessage()) .append("\n\n") .append("Error Code:" + e.getErrorCode()) .append("\n\n") .append("Request ID:" + e.getErrorRequestId()) .append("\n\n") .append("Host ID:" + e.getErrorHostId()); return sb.toString(); } catch (Exception e) { sb.append("\n\n"); sb.append(e.getMessage()); return sb.toString(); } finally { if (obsClient != null) { try { /* * Close obs client */ obsClient.close(); } catch (IOException e) { } } } } @Override protected void onPostExecute(String result) { TextView tv = (TextView)findViewById(R.id.tv); tv.setText(result); tv.setOnClickListener(null); tv.setMovementMethod(ScrollingMovementMethod.getInstance()); } private String claimUploadId() throws ObsException { InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectKey); InitiateMultipartUploadResult result = obsClient.initiateMultipartUpload(request); return result.getUploadId(); } private File createSampleFile() throws IOException { File file = File.createTempFile("obs-android-sdk-", ".txt"); file.deleteOnExit(); Writer writer = new OutputStreamWriter(new FileOutputStream(file)); for (int i = 0; i < 1000000; i++) { writer.write(UUID.randomUUID() + "\n\n"); writer.write(UUID.randomUUID() + "\n\n"); } writer.flush(); writer.close(); return file; } private void completeMultipartUpload(String uploadId) throws ObsException { // Make part numbers in ascending order Collections.sort(partETags, new Comparator<PartEtag>() { @Override public int compare(PartEtag o1, PartEtag o2) { return o1.getPartNumber() - o2.getPartNumber(); } }); sb.append("Completing to upload multiparts\n\n"); CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, objectKey, uploadId, partETags); obsClient.completeMultipartUpload(completeMultipartUploadRequest); } private void listAllParts(String uploadId) throws ObsException { sb.append("Listing all parts......"); ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, objectKey, uploadId); ListPartsResult partListing = obsClient.listParts(listPartsRequest); for (Multipart part : partListing.getMultipartList()) { sb.append("\tPart#" + part.getPartNumber() + ", ETag=" + part.getEtag()); } sb.append("\n"); } }
-
OBS删除文件感觉比传输文件慢好多呐,有没有大佬知道怎么使obs删除文件更快?
-
如何解决这个问题
-
用ModelArts预测一些照片但是文件槽数不能 Sync OBS. 有什么办法可以给意见吗?
-
环境: JAVA 14esdk-obs-java [3.19.7,)问题:最近使用时一直出现408
-
使用Sync OBS同步后,数据保存在哪个位置?我要怎么查看
-
【功能模块】推理代码文件中怎么读取obs桶中的数据集?【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
请教一下各位大佬,一个文件都没有上传成功是因为什么呢 之前是可以得
-
在ModelArts中如何查看OBS目录下的所有文件?我现在知道的是通过OBS管理控制台进行查看,登录OBS管理控制台,去查找对应的OBS桶、文件夹、文件。还有没有其他方法呢?
-
直播开始前,可配置对应的录制规则,配置完成后,对应域名下的所有直播流将按照录制规则进行录制。录制完成后,可在直播录制管理或OBS中查看录制文件。 如何进行直播录制配置呢?且看视频解说->更多指导请参见视频直播帮助中心:https://support.huaweicloud.com/live/index.html【视频教程】上期回顾【视频教程】2020年第1期 视频解说直播拉流回源配置【视频教程】2020年第2期 视频解说直播开停播通知【视频教程】2020年第3期 视频解说直播HTTPS安全加速
-
-
如题,ModelArts SDK、OBS SDK和MoXing的区别?
-
同一张图片在浏览器上下载大概在300 ms的样子,而在我们提供的go例子中却需要约2-3s耗时10倍以上采用的例子是examples中的download_sample.go的getobs函数
-
创建了免费的notebook后,使用OBS上的数据,会扣费吗?从OBS上传到Modelarts的数据,使用中也会一直扣费吗?
-
有时候我需要的数据集比较大,以压缩包的形式存在OBS中,在ModelArts上使用创建训练任务怎么使用?能不能不解压使用呢?
上滑加载中
推荐直播
-
华为云云原生FinOps解决方案,为您释放云原生最大价值
2024/04/24 周三 16:30-18:00
Roc 华为云云原生DTSE技术布道师
还在对CCE集群成本评估感到束手无策?还在担心不合理的K8s集群资源申请和过度浪费?华为云容器服务CCE全新上线云原生FinOps中心,为用户提供多维度集群成本可视化,结合智能规格推荐、混部、超卖等成本优化手段,助力客户降本增效,释放云原生最大价值。
去报名 -
鲲鹏开发者创享日·江苏站暨数字技术创新应用峰会
2024/04/25 周四 09:30-16:00
鲲鹏专家团
这是华为推出的旨在和众多技术大牛、行业大咖一同探讨最前沿的技术思考,分享最纯粹的技术经验,进行最真实的动手体验,为开发者提供一个深度探讨与交流的平台。
即将直播 -
产教融合专家大讲堂·第①期《高校人才培养创新模式经验分享》
2024/04/25 周四 16:00-18:00
于晓东 上海杉达学院信息科学与技术学院副院长;崔宝才 天津电子信息职业技术学院电子与通信技术系主任
本期直播将与您一起探讨高校人才培养创新模式经验。
去报名
热门标签