Google app engine 将音频文件从WP7发布到应用引擎服务器(Java)

Google app engine 将音频文件从WP7发布到应用引擎服务器(Java),google-app-engine,windows-phone-7,audio,attachment,wav,Google App Engine,Windows Phone 7,Audio,Attachment,Wav,我有一个Windows Phone 7应用程序(QuickNote),允许用户录制语音备忘。我正在尝试添加一项功能,允许用户将其音频笔记作为附件发送电子邮件。我使用XNA音频库在手机上播放语音备忘,并将原始音频(字节数组)保存在一个对象上,以便可以播放 我需要能够创建一个音频文件(.wav、.mp3或其他文件),并将其发布到我创建的App Engine java servlet,以便我可以将音频文件作为附件发送电子邮件 非常感谢您提供任何指导和/或代码示例。我没有java部分,但我有客户机部分-

我有一个Windows Phone 7应用程序(QuickNote),允许用户录制语音备忘。我正在尝试添加一项功能,允许用户将其音频笔记作为附件发送电子邮件。我使用XNA音频库在手机上播放语音备忘,并将原始音频(字节数组)保存在一个对象上,以便可以播放

我需要能够创建一个音频文件(.wav、.mp3或其他文件),并将其发布到我创建的App Engine java servlet,以便我可以将音频文件作为附件发送电子邮件


非常感谢您提供任何指导和/或代码示例。

我没有java部分,但我有客户机部分-我的帖子:

public部分类主页:PhoneApplicationPage
{
//建造师
公共主页()
{
初始化组件();
}
私有无效选择按钮\单击(对象发送者、路由目标)
{
PhotoChooserTask=新的PhotoChooserTask();
task.Completed+=task_Completed;
task.Show();
}
私有无效任务_已完成(对象发送方,照片结果e)
{
if(e.TaskResult!=TaskResult.OK)
返回;
const int BLOCK_SIZE=4096;
Uri=新的Uri(“http://localhost:4223/File/Upload“,乌里金。绝对);
WebClient wc=新的WebClient();
wc.AllowReadStreamBuffering=true;
wc.AllowWriteStreamBuffering=true;
//写流打开时要做什么
wc.OpenWriteCompleted+=(s,args)=>
{
使用(BinaryReader br=新的BinaryReader(e.ChosenPhoto))
{
使用(BinaryWriter bw=新的BinaryWriter(args.Result))
{
长b计数=0;
long fileSize=e.ChosenPhoto.Length;
字节[]字节=新字节[块大小];
做
{
字节=br.ReadBytes(块大小);
bCount+=字节。长度;
写入(字节);
}而(b计数<文件大小);
}
}
};
//写作完成后要做什么
wc.WriteStreamClosed+=(s,args)=>
{
MessageBox.Show(“发送完成”);
};
//写入WebClient
OpenWriteAsync(uri,“POST”);
}
}
基本上,您只需运行一个指向某个URL的HTTP POST。在我博客中的示例中,我正在发布一个ASP.NET MVC控制器操作,它只接收传入的输入流并将其写入磁盘

希望这能有所帮助。如果您在java方面有问题,请告诉我,我会看看是否也能找到相应的示例


/克里斯

你不是问过同样的问题吗?没有。在那里,我询问如何将原始音频数据获取到应用程序引擎,并从中创建一个文件。现在我在问如何发送文件。谢谢你的关心。
public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void SelectButton_Click(object sender, RoutedEventArgs e)
    {
        PhotoChooserTask task = new PhotoChooserTask();
        task.Completed += task_Completed;
        task.Show();
    }

    private void task_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult != TaskResult.OK)
            return;

        const int BLOCK_SIZE = 4096;

        Uri uri = new Uri("http://localhost:4223/File/Upload", UriKind.Absolute);

        WebClient wc = new WebClient();
        wc.AllowReadStreamBuffering = true;
        wc.AllowWriteStreamBuffering = true;

        // what to do when write stream is open
        wc.OpenWriteCompleted += (s, args) =>
        {
            using (BinaryReader br = new BinaryReader(e.ChosenPhoto))
            {
                using (BinaryWriter bw = new BinaryWriter(args.Result))
                {
                    long bCount = 0;
                    long fileSize = e.ChosenPhoto.Length;
                    byte[] bytes = new byte[BLOCK_SIZE];
                    do
                    {
                        bytes = br.ReadBytes(BLOCK_SIZE);
                        bCount += bytes.Length;
                        bw.Write(bytes);
                    } while (bCount < fileSize);
                }
            }
        };

        // what to do when writing is complete
        wc.WriteStreamClosed += (s, args) =>
        {
            MessageBox.Show("Send Complete");
        };

        // Write to the WebClient
        wc.OpenWriteAsync(uri, "POST");
    }
}