<?php
$rs = array();
switch($_GET['action']){ //上传临时图片
case 'uploadtmp':
$file = 'uploadtmp.jpg';
@move_uploaded_file($_FILES['Filedata']['tmp_name'], $file);
$rs['status'] = 1;
$rs['url'] = './php/' . $file;
break; //上传切头像
case 'uploadavatar':
$input = file_get_contents('php://input');
$data = explode('--------------------', $input);
@file_put_contents('./avatar_1.jpg', $data[0]);
@file_put_contents('./avatar_2.jpg', $data[1]);
$rs['status'] = 1;
break; default:
$rs['status'] = -1;
}
print json_encode($rs);
?>
红色部分为主要代码。。小弟不懂php。
麻烦大神帮忙转成ASP.NET

解决方案 »

  1.   

    不知道file_put_contents的实现,转换了也是白转。另外,你转换不了的问题应该不是你不懂PHP,而是你不懂ASP.NET或者英语。因为是一个程序员,就算不懂PHP,猜下都可以这个程序做什么,然后你知道做什么,你还写不出asp.net程序么?我觉得php程序对于一个程序员来说再难懂也比人类语言表达的用户需求好懂。
      

  2.   

    同意楼上,况且php文件上传的机制似乎跟asp.net不一样,php是先将文件上传到临时文件,@move_uploaded_file($_FILES['Filedata']['tmp_name'], $file)这句其实就是把上传之后的那个临时文件重命名。但asp.net处理上传的文件,要么直接读取流要么直接saveas,没有临时文件一说。所以,对上面php代码直接翻译成c#代码意义不大,还是分析一下代码的作用,然后用c#实现。
      

  3.   


    我来提问前也看了file_get_contents的用法。是直接将整个文件的内容读取到变量
    但是:file_get_contents('php://input');没明白。
    file_get_contents('aa.txt');这样很明白。'php://input'到底撒意思。真心没有明白。
      

  4.   

    嗯。谢谢了。那:uploadtmp的问题已经不问题了。
    现在就是:'uploadavatar'的问题了。
      

  5.   

    将php输入流读取到一个字符串
    php://input应该是php语言里的规定写法这个asp.net里肯定实现不了你那个第二段红字的大概意思就是接收客户端上传的输入流,用分隔符分隔成数组,把0存成第一个头像文件把1存成第二个头像文件。可见,客户端应该是用的特别的上传方法,把两张图片的数据合并到一起用.....分隔才发送到服务器端的。我觉得你应该先实现这个程序的前端,然后在后台调试一下,看发过来的数据是什么样的,再做处理。还不能直接用Files["xxx"].SaveAs()。因为存完了必然不是一张图片。
      

  6.   

    我就不帮忙转了,翻译一下
    <?php
    $rs = array(); // 定义一个rs数组
    switch($_GET['action']){   // 从GET里面取action, 也就是说url应该是这样的形式,?action=uploadtmp//上传临时图片
    case 'uploadtmp': // ?action=uploadtmp表示上传临时图片
    $file = 'uploadtmp.jpg'; // 准备换成这个名字
    @move_uploaded_file($_FILES['Filedata']['tmp_name'], $file); // 把上传的文件换成这个名字($file)
    $rs['status'] = 1; // 把数组里面的status变成1,应该是用于表示上传成功了
    $rs['url'] = './php/' . $file; break;  // 数组里面的url设置成 ./php/uploadtmp.jpg, 这样写你好看一些//上传切头像
    case 'uploadavatar': // ?action=uploadavatar表示上传切片图像
    $input = file_get_contents('php://input'); // 这里表示接收POST原始数据,接收到input里面
    $data = explode('--------------------', $input); //这个数据以--------------分开后会变成2个图片内容
    @file_put_contents('./avatar_1.jpg', $data[0]); // 把图片一的内容存入 ./avatar_1.jpg
    @file_put_contents('./avatar_2.jpg', $data[1]);  $rs['status'] = 1; // 把图片二的内容存入 ./avatar_2.jpg, 并设置成功标识为成功
    break;default:
    $rs['status'] = -1; // 默认不成功
    }
    print json_encode($rs); // 将结果json加密后输出
    ?>
      

  7.   

    所谓的转,也就是将这个代码的功能换成.net的,这个不是简单的语法替换,所以你自己实现一下吧,里面的东西用.net应该是都可以实现的,只是稍微复杂一些而已。