相关疑难解决方法(0)

使用jQuery.ajax发送multipart/formdata

我使用jQuery的ajax函数将文件发送到服务器端PHP脚本时遇到问题.可以获取文件列表$('#fileinput').attr('files')但是如何将此数据发送到服务器?使用文件输入时$_POST,服务器端php脚本上的结果array()为0(NULL).

我知道这是可能的(虽然我到目前为止还没有找到任何jQuery解决方案,只有Prototye代码(http://webreflection.blogspot.com/2009/03/safari-4-multiple-upload-with-progress.html) ).

这似乎是相对较新的,所以请不要通过XHR/Ajax提及文件上传,因为它肯定有用.

我需要Safari 5中的功能,FF和Chrome会很好但不是必需的.

我现在的代码是:

$.ajax({
    url: 'php/upload.php',
    data: $('#file').attr('files'),
    cache: false,
    contentType: 'multipart/form-data',
    processData: false,
    type: 'POST',
    success: function(data){
        alert(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

ajax jquery file-upload multipartform-data form-data

545
推荐指数
8
解决办法
83万
查看次数

文件上传以及Jersey restful Web服务中的其他对象

我想通过上传图像和员工数据来在系统中创建员工信息.我能够使用球衣进行不同的休息呼叫.但我希望在一次休息电话中实现.我提供下面的结构.请帮我解决这方面的问题.

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA,MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        Employee emp) {

//..... business login

}
Run Code Online (Sandbox Code Playgroud)

每当我想要做的时候,我都会在Chrome邮递员中出错.我的Employee json的简单结构如下所示.

{
    "Name": "John",
    "Age": 23,
    "Email": "john@gmail.com",
    "Adrs": {
        "DoorNo": "12-A",
        "Street": "Street-11",
        "City": "Bangalore",
        "Country": "Karnataka"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我可以通过进行两次不同的调用来实现,但我希望在一次休息调用中实现,这样我就可以接收文件以及员工的实际数据.

请求您在这方面提供帮助.

java multipartform-data jax-rs jersey postman

61
推荐指数
1
解决办法
9万
查看次数

如何通过ajax(没有jquery)发送multipart/form-data表单内容?

我试图发送一些表单而不重新加载页面,我试图理解引擎盖下的细节,因此不使用任何JavaScript库:

var http = createRequestObject();
function createRequestObject() {
    var objAjax;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        objAjax=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        objAjax=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return objAjax;
}

function display_progress() { ... }    

function upload_file() {
    var request = 'UploaderServlet';
    http.open('post', request);
    http.onreadystatechange = display_progress;
    http.send(null); // HERE PROBABLY THE DATA SHOULD BE SENT
}

<form enctype="multipart/form-data" id="upload_form" name="upload_form" method="POST" action="UploaderServlet" onsubmit="upload_file(); return false;" target="upload_target">
Choose a file <br />  
<input name="file" size="27" …
Run Code Online (Sandbox Code Playgroud)

javascript ajax

15
推荐指数
1
解决办法
7万
查看次数

Java Rest Jersey:发布多种类型的数据(文件和JSON)

我有一个Jersey REST服务,将向其发布数据.将有一个CSV文件,它是该CSV的实际数据和一些元数据(元素可以是JSON或XML格式).如果需要发布这两个方法,那么方法签名和附加注释应该如何发布呢?

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({MediaType.APPLICATION_JSON})
public CreateTaskVO provideService(@FormParam("meta") String v1,
        @FormParam("data") InputStream v2) {
Run Code Online (Sandbox Code Playgroud)

在这里,我设想第一个参数是元数据的JSON字符串,第二个参数是实际数据的输入流.这会有用吗?

java rest json jax-rs jersey

5
推荐指数
1
解决办法
2万
查看次数

用于附加文件的RESTeasy客户端代码

我需要将一个文件附加到我的服务端点.我通过POSTMAN(chrome浏览器插件测试休息服务)测试了功能,它运行正常.

但是我需要用JUNIT测试它.对于这种情况,我使用的是RESTeasy客户端.

我正在尝试使用此代码:

    StringBuilder sb = new StringBuilder();

    BufferedReader br = new BufferedReader(new FileReader("C:/Temp/tempfile.txt"));
    try {
        String line = br.readLine();
        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }
    }
    finally {
        br.close();
    }

    byte[] file = sb.toString().getBytes();

Client client = ClientBuilder.newClient();
        Invocation.Builder builder = client.target(webTarget.getUri()
                + "/attachment" ).request(MediaType.MULTIPART_FORM_DATA_TYPE);

        Response response = builder.post(Entity.entity(file, MediaType.MULTIPART_FORM_DATA), Response.class);
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界

这有什么解决方案吗?

或者任何人都可以提供示例RESTeasy rest客户端代码来附加文件?

java rest junit jax-rs resteasy

3
推荐指数
1
解决办法
4175
查看次数

JAX-RS多态POST请求:我应该如何编写JSON?

我在尝试用JAX-RS解决此问题时遇到了麻烦,我认为这与编组/解组过程有关(我想我不太了解),我想重新创建此:

  1. 进行发布的REST端点是/ rest / register,因此我的服务定义如下:

    @ApplicationPath("/rest")
    public interface RestRegistration {
        @POST
        @Path("/register")
        @Produces(MediaType.APPLICATION_JSON)
        @Consumes(MediaType.APPLICATION_JSON)
        String register(UsernameRegistration usernameAccess, String network) throws RegistrationException;
    
        @POST
        @Path("/register")
        @Produces(MediaType.APPLICATION_JSON)
        @Consumes(MediaType.APPLICATION_JSON)
        String register(EmailRegistration emailAccess, String network) throws RegistrationException;
    }
    
    public class RestRegistrationImpl implements RestRegistration {
        public String register(UsernameRegistration usernameAccess, String network) throws RegistrationException {
            return "StackOverflow example: username=" + usernameAccess.getUser + ", network="+network;
        }
    
        public String register(EmailRegistration emailAccess, String network) throws RegistrationException{
            return "StackOverflow example: email=" + emailAccess.getEmail + ", network="+network;
        }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 它应该至少接收两个不同的JSON消息:

    { "usernameAccess" …
    Run Code Online (Sandbox Code Playgroud)

java rest json jax-rs marshalling

2
推荐指数
1
解决办法
2153
查看次数

jersey 2 multipart pojo始终为null

我正在尝试使用Jersey + Jackson编写一个休息服务来上传文件以及其他一些文件信息.

使用multipart,文件正确上传,简单字段也可以,但是应该包含其他数据的POJO始终为null.

简化示例

POJO:

public class Test {

 public String name;

 public Test() {}

 public String getName() {
    return name;
 }
 public void setName(String name) {
    this.name = name;
 }
}
Run Code Online (Sandbox Code Playgroud)

应用:

@ApplicationPath("myapp")

public class JerseyApp extends ResourceConfig {

 public JerseyApp() {

  register(MultiPartFeature.class);

  register(JacksonFeature.class);

  packages("com.test.rest");

  // Enable Tracing support.
  property(ServerProperties.TRACING, "ALL");
 }
}
Run Code Online (Sandbox Code Playgroud)

服务:

@Path("file")
public class FileRestService {

 @POST
 @Path("/upload1")
 @Consumes(MediaType.MULTIPART_FORM_DATA)
 public Response createFile1(@FormDataParam("doc") Test doc) {
    //doc is always null
    return Response.ok(doc.getName()).build();
 }

 @POST
 @Path("/upload2")
 @Consumes(MediaType.APPLICATION_JSON) …
Run Code Online (Sandbox Code Playgroud)

java multipart jersey javabeans jackson

1
推荐指数
1
解决办法
1564
查看次数