diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/curl/BasicCurlParser.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/curl/BasicCurlParser.java
index 8d95da29b7..8a937c16ab 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/curl/BasicCurlParser.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/curl/BasicCurlParser.java
@@ -710,9 +710,9 @@ public class BasicCurlParser {
                     String key = nameAndValue.substring(0, indexOfEqual).trim();
                     String value = nameAndValue.substring(indexOfEqual + 1).trim();
                     if ("form-string".equals(option.getDescriptor().getName())) {
-                        request.addFormStringData(key, value);
+                        request.addFormStringData(key, unquote(value));
                     } else {
-                        request.addFormData(key, value);
+                        request.addFormData(key, unquote(value));
                     }
                     request.setMethod("POST");
                 } else if (option.getDescriptor().getId() == USER_AGENT_OPT) {
@@ -955,7 +955,7 @@ public class BasicCurlParser {
            postdata = encodePostdata(postdata);
        } else {
            if (postdata.charAt(0) == '@' && !"data-raw".equals(dataOptionName)) {
-               postdata = postdata.substring(1, postdata.length());
+               postdata = unquote(postdata.substring(1, postdata.length()));
                postdata = readFromFile(postdata);
                if (!"data-binary".equals(dataOptionName)) {
                    postdata = deleteLineBreak(postdata);
@@ -965,6 +965,15 @@ public class BasicCurlParser {
        return postdata;
    }
 
+   private String unquote(String value) {
+       LoggerFactory.getLogger(this.getClass()).info("Unquote {}", value, new RuntimeException(""));
+       if (value.charAt(0) == '"') {
+           String result = value.substring(1, value.length() - 1);
+           return result.replaceAll("\\\\(.)", "\\1");
+       }
+       return value;
+   }
+
    /**
     * Encode the post data
     *
@@ -975,7 +984,7 @@ public class BasicCurlParser {
         if (postdata.contains("@")) {
             String contentFile = null;
             String[] arr = postdata.split("@", 2);
-            String dataToEncode = readFromFile(arr[1]);
+            String dataToEncode = readFromFile(unquote(arr[1]));
             try {
                 contentFile = URLEncoder.encode(dataToEncode, StandardCharsets.UTF_8.name());
             } catch (UnsupportedEncodingException e) {
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
index 49ca3d8d68..43d6d44a9f 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
@@ -526,7 +526,7 @@ public class ParseCurlCommandAction extends AbstractAction implements MenuCreato
             boolean isContainsFile = "@".equals(formValue.substring(0, 1));
             boolean isContainsContentType = formValue.toLowerCase().contains(TYPE_FORM);
             if (isContainsFile) {
-                formValue = formValue.substring(1, formValue.length());
+                formValue = unquote(formValue.substring(1, formValue.length()));
                 String contentType;
                 if (isContainsContentType) {
                     String[] formValueWithType = formValue.split(TYPE_FORM);
@@ -552,6 +552,13 @@ public class ParseCurlCommandAction extends AbstractAction implements MenuCreato
         }
     }
 
+    private String unquote(String substring) {
+        if (substring.charAt(0) == '"') {
+            return substring.substring(1, substring.length() - 1).replaceAll("\\\\(.)", "\\1");
+        }
+        return substring;
+    }
+
     private void createProxyServer(Request request, HTTPSamplerProxy httpSampler) {
         Map<String, String> proxyServer = request.getProxyServer();
         for (Map.Entry<String, String> proxyPara : proxyServer.entrySet()) {
diff --git a/src/protocol/http/src/test/java/org/apache/jmeter/curl/BasicCurlParserTest.java b/src/protocol/http/src/test/java/org/apache/jmeter/curl/BasicCurlParserTest.java
index c9f92286e9..7bc9fd8eef 100644
--- a/src/protocol/http/src/test/java/org/apache/jmeter/curl/BasicCurlParserTest.java
+++ b/src/protocol/http/src/test/java/org/apache/jmeter/curl/BasicCurlParserTest.java
@@ -422,6 +422,39 @@ public class BasicCurlParserTest {
                 "With method 'parser', we should post form data");
     }
 
+    @Test
+    public void testFormWithQuotedValue() {
+        String cmdLine = "curl 'https://www.exaple.invalid/' "
+                + "--form 'test=\"something quoted\"'";
+        BasicCurlParser basicCurlParser = new BasicCurlParser();
+        BasicCurlParser.Request request = basicCurlParser.parse(cmdLine);
+        Map<String, String> res = request.getFormData();
+        assertEquals("something quoted", res.get("test"),
+                "With method 'form', we should post form data");
+    }
+
+    @Test
+    public void testFormWithQuotedValueWithQuotes() {
+        String cmdLine = "curl 'https://www.exaple.invalid/' "
+                + "--form 'test=\"something \\\"quoted\\\"\"'";
+        BasicCurlParser basicCurlParser = new BasicCurlParser();
+        BasicCurlParser.Request request = basicCurlParser.parse(cmdLine);
+        Map<String, String> res = request.getFormData();
+        assertEquals("something \"quoted\"", res.get("test"),
+                "With method 'form', we should post form data");
+    }
+
+    @Test
+    public void testFormWithQuotedFilename() {
+        String cmdLine = "curl 'https://www.exaple.invalid/' "
+                + "--form 'image=@\"/some/file.jpg\"'";
+        BasicCurlParser basicCurlParser = new BasicCurlParser();
+        BasicCurlParser.Request request = basicCurlParser.parse(cmdLine);
+        Map<String, String> res = request.getFormData();
+        assertEquals("/some/file.jpg", res.get("image"),
+                "With method 'form', we should post form data");
+    }
+
     @Test
     public void testFormString() {
         String cmdLine = "curl 'https://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_submit/action_page.php' "
