1 package com.netease.nimlib.sdk.msg.attachment;
3 import android.net.Uri;
4 import android.text.TextUtils;
14 import org.json.JSONObject;
22 private static final String TAG =
"FileAttachment";
72 private boolean isUri =
false;
90 if(TextUtils.isEmpty(path)){
93 return new File(path).exists() ? path : null;
96 NimLog.e(TAG,
"getPath exception", e);
107 if (!isUri && !TextUtils.isEmpty(path)) {
121 return new File(path).exists() ? path : null;
131 if (!TextUtils.isEmpty(fileName)) {
132 int dotIndex = fileName.lastIndexOf(
".");
134 if (dotIndex >= 0 && dotIndex < fileName.length() - 1) {
135 fileName = fileName.substring(0, dotIndex);
138 return NimStorageUtil.getWritePath(fileName, NimStorageType.TYPE_THUMB_IMAGE);
169 this.path = uri.toString();
263 if (TextUtils.isEmpty(md5)) {
264 if (TextUtils.isEmpty(url)) {
265 return MD5.getStringMD5(path);
267 return MD5.getStringMD5(url);
272 else if (!TextUtils.isEmpty(path)) {
273 return StringUtil.nameOfPath(path);
275 if (TextUtils.isEmpty(md5)) {
276 return MD5.getStringMD5(url);
317 if (TextUtils.isEmpty(nosTokenSceneKey)) {
346 return NimStorageType.TYPE_FILE;
349 protected void save(JSONObject json) {
353 protected void load(JSONObject json) {
371 JSONObject
object =
new JSONObject();
373 if (!send && !TextUtils.isEmpty(path)) {
374 object.put(KEY_PATH, path);
377 if (!TextUtils.isEmpty(md5)) {
378 object.put(KEY_MD5, md5);
381 if (!TextUtils.isEmpty(displayName)) {
382 object.put(KEY_NAME, displayName);
385 object.put(KEY_URL, url);
386 object.put(KEY_SIZE, size);
389 if (!TextUtils.isEmpty(extension)) {
390 object.put(KEY_EXT, extension);
392 if (!TextUtils.isEmpty(nosTokenSceneKey)) {
393 object.put(KEY_SCENE, nosTokenSceneKey);
397 object.put(KEY_EXPIRE, expire);
400 object.put(KEY_FORCE_UPLOAD, forceUpload);
403 }
catch (Exception e) {
407 return object.toString();
410 private void fromJson(String attach) {
411 JSONObject json = JSONHelper.parse(attach);
416 path = JSONHelper.getString(json, KEY_PATH);
422 md5 = JSONHelper.getString(json, KEY_MD5);
423 url = JSONHelper.getString(json, KEY_URL);
424 displayName = JSONHelper.getString(json, KEY_NAME);
425 size = JSONHelper.getLong(json, KEY_SIZE);
426 extension = JSONHelper.getString(json, KEY_EXT);
427 if(extension != null && extension.startsWith(KEY_DOT))
429 extension = extension.substring(1);
432 forceUpload = JSONHelper.getBoolean(json, KEY_FORCE_UPLOAD);
433 expire = JSONHelper.getLong(json, KEY_EXPIRE);
String getUrl()
获取文件在服务器上的下载url。若文件还未上传,返回null
static final String KEY_MD5
String getExtension()
获取文件后缀名
void save(JSONObject json)
static final String KEY_SCENE
String nosTokenSceneKey
上传文件时用的对token对应的场景,默认NimNosSceneKeyConstant#NIM_DEFAULT_IM
void setExtension(String extension)
设置文件后缀名
boolean setUri(Uri uri)
设置文件uri, 仅支持ContentResolver.SCHEME_FILE类型和ContentResolver.SCHEME_CONTENT类型的uri 仅支持发...
String getFileName()
获取文件名。
static boolean isFileOrContentUri(String uriString)
判断URI是否为File或者Content类型URI File类型URI表示私有文件 Content类型URI表示共享文件,如图片,音频...
static final String KEY_DOT
static Uri string2Uri(String uriString)
static final String KEY_PATH
String getPath()
获取文件本地路径,若文件不存在,返回null
void setForceUpload(boolean forceUpload)
设置文件是否强制重新上传,默认false
String getThumbPath()
获取缩略图文件的本地路径,若文件不存在,返回null
String getDisplayName()
获取文件的显示名。可以和文件名不同,仅用于界面展示
boolean forceUpload
如果服务器存在相同的附件文件,是否强制重新上传 , 默认false
static final String KEY_URL
boolean isForceUpload()
文件是否强制重新上传
void setMd5(String md5)
设置文件内容MD5
NimStorageType storageType()
void setPath(String path)
设置文件路径
void setNosTokenSceneKey(String nosTokenSceneKey)
设置文件上传时的nos scene
String getThumbPathForSave()
获取用于保存缩略图文件的位置
void load(JSONObject json)
void setDisplayName(String displayName)
设置文件显示名
FileAttachment(String attach)
static final String KEY_FORCE_UPLOAD
void setUrl(String url)
设置文件在服务器上的下载url
long getSize()
获取文件大小,单位为byte
static final String KEY_V2_INTERNAL_UPLOAD_STATE
String toJson(boolean send)
将消息附件序列化为字符串,存储到消息数据库或发送到服务器。
String getPathForSave()
获取用于保存该文件的位置
String getNosTokenSceneKey()
获取文件上传时的nos scene
static final String KEY_SIZE
static final String KEY_EXPIRE
static final String KEY_NAME
void setSize(long size)
设置文件大小,单位为byte
static final String KEY_EXT