我是一个新的firebase开发人员。我正在开发一个android应用程序,让用户上传图像到firebase存储。因为我使用的是火花模式,所以我只有5Gb的存储空间。我想限制用户上传到firebase存储器的图像大小。下面是我用来上传图像到firebase存储器的代码。
Uri imageUri = Uri.parse(imagePath);
//need permistion android.permission.MANAGE_DOCUMENTS to upload file.
final StorageReference photoRef = mStorageRef.child(Constants.FIREBASE_LOCATION_IMAGE_EXAM).child(imageUri.getLastPathSegment());
taskStarted();
photoRef.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Log.d(TAG, "upload success");
mUploadExamTaskCount--;
examURLArray.add(new ExamPage(taskSnapshot.getDownloadUrl().toString()));
if (mUploadExamTaskCount == 0) {//upload files success.
/**
* update image link to database.
*/
DatabaseReference firebaseExamPage = FirebaseDatabase.getInstance().getReference(Constants.FIREBASE_LOCATION_EXAM_PAGE);
firebaseExamPage.child(examKey).setValue(examURLArray);
Log.d(TAG, "send upload exam success br");
Intent taskCompletedIntent = new Intent(ACTION_UPLOAD_EXAM_COMPLETED);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(taskCompletedIntent);
}
taskCompleted();
}
})
你知道如何解决这个问题吗?
可能会迟到,但可以帮助另一个新手:-)你可以这样使用字节来减少上传的大小:
StorageReference fileToUpload = mStorage.child("xyz").child(x);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
photo.invalidate();
BitmapDrawable drawable = (BitmapDrawable) photo.getDrawable();
Bitmap imp = drawable.getBitmap();
imp.compress(Bitmap.CompressFormat.JPEG, 25, bao);
byte[] byteArray = bao.toByteArray();
UploadTask uploadTask = fileToUpload.putBytes(byteArray);
如果您的目标不一定是限制用户,而是将图像保持在较小的尺寸,那么您可以使用JavaScript在客户端更好地调整图像的大小。
这对我们来说是完美的解决方案,节省了:
如果你感兴趣,你可以看看dcollien的另一个回答,在这个回答中我们给出了调整大小的依据:
https://stackoverflow.com/a/31669706/1920145
正如人们在该答案中看到的那样,使用方法非常简单,要包含的脚本只有一个小的JS / ES6文件。
我相信这个家伙(dcollien)值得更多的优点,所以我建议你给他的答案和这个答案投票(这样其他人就可以发现它是相关的)。
根据Firebase存储安全规则文档,您可以编写检查上传文件大小的规则:
service firebase.storage {
match /b/<bucket>/o {
match /files/{fileName} {
allow read;
allow write: if request.resource.size < 10 * 1024 * 1024; // 10MB limit for instance
}
}
}
我无法上载firebase存储上的配置文件图像。我正在把烤面包片上的错误打印出来。为什么会出现这种情况?我无法解决这个问题,我审查了我的代码很多次。问题可能是什么?我如何调整我的代码以使其正常工作?提前向大家表示感谢。
问题内容: 当我尝试删除目录时,FirebaseStorage始终返回错误,即类似以下内容始终返回错误。 但是,删除文件可以正常工作,例如不会返回错误: 我在这里可能做错了什么?我不认为FirebaseStorage不支持它,因为从目录中一个接一个地删除文件会很la脚(特别是如果所述目录有100或1000个这样的目录)。 问题答案: 从Google网上论坛删除目录是不可能的。您必须在某个位置(在F
问题内容: 我正在尝试将调整大小的图像上传到S3: 但我得到一个错误: 问题答案: 您需要先将输出图像转换为一组字节,然后才能上载到s3。您可以将图像写入文件然后上传文件,也可以使用cStringIO对象来避免写入磁盘,就像我在这里所做的那样:
问题内容: 我在Django应用中有一个表单,用户可以在其中上传文件。 如何设置上传文件大小的限制,以便如果用户上传的文件大于我的限制,则该表格将无效并且会引发错误? 问题答案: 此代码可能会帮助:
在Michael Hartl的The Rails教程第11章的结尾,我通过创建存储桶、使用IAM设置用户并授予用户Amazon S3FullAccess策略,成功地启用了用户上传到Amazon S3服务。允许我网站上的未知用户完全访问存储桶以在我的网站上上传图像,这感觉很脏而且非常不安全,我不确定我是否应该有这种感觉。我在 http://awspolicygen.s3.amazonaws.com/
有没有通过HTTP将图像上传到Google App Engine(Python)的例子?此外,是否可以从Blob存储中检索图像并将图像链接共享给其他人?