当前位置: 首页 > 面试题库 >

将文件从动作脚本发送到servlet

翁翰墨
2023-03-14
问题内容

我不知道在Flash或Actionscript中进行编程。实际上,我是一名Java EE开发人员。

在Flash文件中,我有以下方法:

    private function recordComplete(e:Event):void
    {
        fileReference.save(recorder.output, "recording.wav");

    }

此方法会将录制的声音保存到我们将指定的文件夹中的“ recording.wav”中。

我想要做的是通过将录制的声音发送到Java Servlet来更改保存到磁盘的内容。

我找到了这段代码,但是我不知道如何在HTTP请求中发送的params中插入recorder.output:

var uploadRequest:URLRequest = new URLRequest("http://127.0.0.1:8080/uploading/upservlet");
        uploadRequest.method = URLRequestMethod.POST;
        uploadRequest.contentType = "multipart/form-data";
        uploadRequest.data = myByteArray;

        var uploader:URLLoader = new URLLoader;
        uploader.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
        uploader.addEventListener(Event.COMPLETE, onUploadComplete);
        uploader.dataFormat = URLLoaderDataFormat.BINARY;
        uploader.load(uploadRequest);

请帮忙。


问题答案:

默认情况下,flash无法multipart使用参数创建请求,您必须手动构造它。这是我在项目中使用的简单实用程序方法:

private static const BOUNDARY:String = "boundary";

/**
 * Create multipart request for URLLoader 
 * NOTE: Don't forget to set the URLLoader.dataFormat = URLLoaderDataFormat.BINARY;
 * @param url upload url
 * @param bytes bytes to upload
 */ 
public static function createMultiPartRequest(url:String, bytes:ByteArray, fileProp:String="file1", fileName:String="file1.png", params:Object=null):URLRequest
{
    var request:URLRequest = new URLRequest(url);

    var header1:String = "\r\n--" + BOUNDARY + "\r\n" + 
        "Content-Disposition: form-data; name=\""+fileProp+"\"; filename=\""+fileName+"\"\r\n" + 
        "Content-Type: image/png\r\n" + "\r\n";
    var headerBytes1:ByteArray = new ByteArray();
    headerBytes1.writeMultiByte(header1, "ascii");
    var postData:ByteArray = new ByteArray();
    postData.writeBytes(headerBytes1, 0, headerBytes1.length);

    if(bytes)
        postData.writeBytes(bytes, 0, bytes.length);

    if (!params)
        params = {};
    if (!params.Upload)
        params.Upload = "Submit Query";
    for (var prop:String in params) {
        var header:String = "--" + BOUNDARY + "\r\n" + "Content-Disposition: form-data; name=\""+prop+"\"\r\n" + "\r\n" + params[prop]+"\r\n" + "--" + BOUNDARY + "--";
        var headerBytes:ByteArray = new ByteArray();
        headerBytes.writeMultiByte(header, "ascii");
        postData.writeBytes(headerBytes, 0, headerBytes.length);
    }
    request.data = postData;
    request.method = URLRequestMethod.POST;
    request.contentType = "multipart/form-data; boundary=" + BOUNDARY;

    return request;
}

因此,您应该以以下方式修改代码:

    var uploadRequest:URLRequest = createMultiPartRequest("http://127.0.0.1:8080/uploading/upservlet", myByteArray, "file1", recorder.output, {param1:value1});

    var uploader:URLLoader = new URLLoader;
    uploader.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
    uploader.addEventListener(Event.COMPLETE, onUploadComplete);
    uploader.dataFormat = URLLoaderDataFormat.BINARY;
    uploader.load(uploadRequest);


 类似资料:
  • 我正在从Bash脚本启动一个名为 的Java代码。Bash 脚本启动 Java 代码,然后运行 Java 代码。在Java程序结束时,我想发送一个信号回到Bash脚本以终止。请记住,Bash 脚本在 PID = 1 的情况下运行。我必须杀死PID 1过程。 我设置了bash脚本,使其在无限循环中运行,并< code >等待终止信号: 我正在使用Docker实例,信号是< code>sigterm。

  • 问题内容: 我正在尝试将消息从后台页面发送到内容脚本,然后将消息从该内容脚本发送到注入的脚本。我已经尝试过了,但是没有用。 这是我的代码的样子。 manifest.json background.js content_script.js injection.js 从第一部分背景-> content_script开始,消息发送不起作用。我的代码有什么问题吗? 问题答案: 由于内容脚本的注入方式,您的

  • 问题内容: 有没有一种方法可以使用Python脚本中的POST发送文件? 问题答案: 通过请求,上传Multipart编码的文件非常简单: 而已。我不是在开玩笑-这是一行代码。文件已发送。让我们检查:

  • 问题内容: 我想从Linux Shell脚本发送电子邮件。要执行此操作的标准命令是什么,我是否需要设置任何特殊的服务器名称? 问题答案: 如果服务器配置正确,例如它已启动并正在运行MTA,则可以只使用mail命令。 例如,要发送文件的内容,可以执行以下操作: 更多细节。

  • 问题内容: 什么是场景 我想从Android向服务器发送多个ArrayList(通常为5个),并将其插入到mysql数据库中。 我成功完成的工作 我已使用JSON成功将Android中的单个值和多个值发送到PHP脚本 我已经使用JSON从mysql数据库到android接收了单条记录和多条记录 这是用于从服务器插入值并从中获取价值的代码 和TeacherAuthen.php脚本 我被困在那里 我没

  • 我将pdf文档存储在服务器端的文件系统中。 我需要让用户下载其中一个,当他/她点击下载。 问题是我知道如何将文件从NodeJS发送到浏览器,但这里的请求将由ReactJS axios请求发出。因此,当我发送文件时,响应将转到react。如何将该pdf文件发送给用户?我是否使用前端代码直接访问文件系统? 在NodeJS中执行之后,当我记录响应时,我在浏览器控制台中获得以下信息 我如何处理这个问题,以