diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 3203bb7..6afade4 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -415,4 +415,7 @@
     <string name="estore_homepage" translatable="false">http://3g.189store.com/downclient</string>
     <string name="download_estore_app">天翼空间客户端不存在，请下载并安装。</string>
     <string name="estore_url_warning">url太长，无法启动天翼空间客户端！</string>
+
+    <!-- Add for Unsupport Uploading Drm Files Feature -->
+    <string name="drm_file_unsupported">不支持Drm文件上传!</string>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e14f62b..164030f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1029,4 +1029,7 @@
     <string name="estore_homepage" translatable="false">http://3g.189store.com/downclient</string>
     <string name="download_estore_app">Estore app does not exist, please download and install it.</string>
     <string name="estore_url_warning">Launch Estore app failed, url is too long!</string>
+
+    <!-- Add for Unsupport Uploading Drm Files Feature -->
+    <string name="drm_file_unsupported">Drm file is unsupported!</string>
 </resources>
diff --git a/src/com/android/browser/UploadHandler.java b/src/com/android/browser/UploadHandler.java
index a9560bb..544419b 100644
--- a/src/com/android/browser/UploadHandler.java
+++ b/src/com/android/browser/UploadHandler.java
@@ -19,8 +19,10 @@
 import android.app.Activity;
 import android.content.ActivityNotFoundException;
 import android.content.Intent;
+import android.database.Cursor;
 import android.net.Uri;
 import android.os.Environment;
+import android.os.SystemProperties;
 import android.provider.MediaStore;
 import android.webkit.ValueCallback;
 import android.widget.Toast;
@@ -56,6 +58,38 @@
         return mHandled;
     }
 
+    private boolean isDrmFileUpload(Uri uri) {
+        if (uri == null) return false;
+
+        String path = null;
+        String scheme = uri.getScheme();
+        if ("content".equals(scheme)) {
+            String[] proj = null;
+            if (uri.toString().contains("/images/")) {
+                proj = new String[]{MediaStore.Images.Media.DATA};
+            } else if (uri.toString().contains("/audio/")) {
+                proj = new String[]{MediaStore.Audio.Media.DATA};
+            } else if (uri.toString().contains("/video/")) {
+                proj = new String[]{MediaStore.Video.Media.DATA};
+            }
+            Cursor cursor = mController.getActivity().managedQuery(uri, proj, null, null, null);
+            if (cursor != null && cursor.moveToFirst() && proj != null) {
+                path = cursor.getString(0);
+            }
+        } else if ("file".equals(scheme)) {
+            path = uri.getPath();
+        }
+        if (path != null) {
+            if (path.endsWith(".fl") || path.endsWith(".dm")
+                    || path.endsWith(".dcf") || path.endsWith(".dr") || path.endsWith(".dd")) {
+                Toast.makeText(mController.getContext(), R.string.drm_file_unsupported,
+                        Toast.LENGTH_LONG).show();
+                return true;
+            }
+        }
+        return false;
+    }
+
     void onResult(int resultCode, Intent intent) {
 
         if (resultCode == Activity.RESULT_CANCELED && mCaughtActivityNotFoundException) {
@@ -85,7 +119,14 @@
             }
         }
 
-        mUploadMessage.onReceiveValue(result);
+        // add unsupport uploading drm file feature for carrier.
+        boolean drmUpload = SystemProperties.getBoolean("persist.env.browser.drmupload", false);
+        if (drmUpload && isDrmFileUpload(result)) {
+            mUploadMessage.onReceiveValue(null);
+        } else {
+            mUploadMessage.onReceiveValue(result);
+        }
+
         mHandled = true;
         mCaughtActivityNotFoundException = false;
     }
