我有一个Windows Phone 7应用程序(QuickNote),该应用程序允许用户记录语音注释。我正在尝试添加一项功能,使用户可以通过电子邮件将音频笔记作为附件发送。我使用XNA音频库在电话上播放语音注释,并将原始音频(字节数组)保存在对象上,以便可以播放。
我需要能够创建音频文件(.wav,.mp3或其他文件)并将其发布到我创建的App Engine Java Servlet中,以便我可以通过电子邮件将音频文件作为附件发送。
非常感谢任何方向和/或代码样本。
最佳答案
我没有Java部分,但有客户端部分-来自我在http://chriskoenig.net/2011/08/19/upload-files-from-windows-phone/的帖子:
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");
}
}
基本上,您只需对某个URL运行HTTP POST。在我博客的示例中,我将发布到ASP.NET MVC Controller Action,该Action仅接收传入的输入流并将其写入磁盘。
希望这会有所帮助。如果您在Java方面遇到问题,请告诉我,我将看看是否也可以为此提供样本。
/克里斯
关于google-app-engine - 将音频文件从WP7发布到App Engine服务器(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784825/