gpt4 book ai didi

c# - 将 Windows Phone 7 应用程序中的图像文件上传到 PHP

转载 作者:可可西里 更新时间:2023-10-31 23:06:55 27 4
gpt4 key购买 nike

我正在尝试从图片库(在 WP7 上)上传图片并将其保存在服务器上的文件夹中。

在服务器上,我使用 PHP 通过 POST 方法接收文件。PHP代码是:

<?php
$uploads_dir = 'files/'; //Directory to save the file that comes from client application.
if ($_FILES["file"]["error"] == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["file"]["tmp_name"];
$name = $_FILES["file"]["name"];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
?>

我已经尝试过一些方法,但它们似乎都失败了。我已经使用 Client.UploadFile 方法在 Windows 窗体应用程序中完成了这项工作,但它似乎不能用于 Windows Phone 应用程序。

我认为 httpwebrequest 可以提供帮助,对吗?

到目前为止,这是我的 C# 代码:

public partial class SamplePage : PhoneApplicationPage
{
public SamplePage()
{
InitializeComponent();
}

PhotoChooserTask selectphoto = null;

private void SampleBtn_Click(object sender, RoutedEventArgs e)
{
selectphoto = new PhotoChooserTask();
selectphoto.Completed += new EventHandler<PhotoResult>(selectphoto_Completed);
selectphoto.Show();
}

void selectphoto_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
BinaryReader reader = new BinaryReader(e.ChosenPhoto);
image1.Source = new BitmapImage(new Uri(e.OriginalFileName));
txtBX.Text = e.OriginalFileName;
}
}
}

我在某处看到它要求将图像转换为字节串,我不确定。但是,请帮助我。

非常感谢。

最佳答案

我会将图像转换为 base64(请参阅 System.Convert),然后通过 POST 传输:

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://mydomain.cc/saveimage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
string postData = String.Format("image={0}", myBase64EncodedImage);

// Getting the request stream.
request.BeginGetRequestStream
(result =>
{
// Sending the request.
using (var requestStream = request.EndGetRequestStream(result))
{
using (StreamWriter writer = new StreamWriter(requestStream))
{
writer.Write(postData);
writer.Flush();
}
}

// Getting the response.
request.BeginGetResponse(responseResult =>
{
var webResponse = request.EndGetResponse(responseResult);
using (var responseStream = webResponse.GetResponseStream())
{
using (var streamReader = new StreamReader(responseStream))
{
string srresult = streamReader.ReadToEnd();
}
}
}, null);
}, null);
}

saveimage.php 应该是这样的:

<?
function base64_to_image( $imageData, $outputfile ) {
/* encode & write data (binary) */
$ifp = fopen( $outputfile, "wb" );
fwrite( $ifp, base64_decode( $imageData ) );
fclose( $ifp );
/* return output filename */
return( $outputfile );
}

if (isset($_POST['image'])) {
base64_to_jpeg($_POST['image'], "my_path_to_store_images.jpg");
}
else
die("no image data found");
?>

注意:我还没有测试代码。可能有拼写错误或其他错误。这只是为了说明我将如何使用 POST 传输图像。

作为对您评论的回复进行编辑:我手头没有编码为 base64 的代码,但这里是您如何在 C# 中解码 base64 编码的图像:

byte[] image = Convert.FromBase64String(str);

关于c# - 将 Windows Phone 7 应用程序中的图像文件上传到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15490347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com