用上传的图片替换图片

用上传的图片替换图片

问题描述:

我在解决图片上传问题时遇到了一些问题。我正在使用一个jquery函数来检查所选图像的文件类型。我想要做的是将网站页面上的当前图像替换为用户决定上传的任何图像。但是,我无法找到从上传中获取完整图像源路径的方法 - 我总是会得到一个虚假的路径,这对我所要做的并不起作用。我是否真的需要为图像创建数据库,如果我想这样做,还是有其他方法?我无法使用PHP/MySQL代码 - 只有ASP.NET,C#和SQL/SQL Express。用上传的图片替换图片

这是我到目前为止的代码,除了我无法用上传的代码成功替换默认图像(名称和标识为“logo”),因为我没有从中获得完整路径上传者。任何建议将是非常有帮助!在此先感谢!

<html> 
    <head> 
     <title>Image Swap Widget Testing</title> 

    <style type="text/css"> 
     .myWebForm{ 
      border: 4px solid grey; 
      width: 300px; 
      height: 200px; 
      padding: 10px; 
      font-family: Arial; 
      font-size: small; 
     } 
    </style> 

     <script type="text/javascript" src="jquery-1.9.1.js"></script> 

     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('INPUT[type="file"]').change(function() { 
        var ext = this.value.match(/\.(.+)$/)[1]; 
        switch (ext) { 
         case 'jpg': 
         case 'jpeg': 
         case 'png': 
         case 'gif': 
         case 'bmp': 
          $('#uploading').attr('disabled', false); 
          $('#logo').attr("src", $('#uploading').val()); 
          alert('image approved!'); 
          alert($('img').attr('src')); 
          alert($('img')[0].src); 
          alert($('#uploading').val(img.src)); 
         break; 
        default: 
         alert('This is not an allowed file type.'); 
         this.value = ''; 
        } 
       }); 

       $('#addButton').click(function(){ 
        //alert('Add Image Button was clicked'); 

        //var newImgSrc = getSrc($('#uploading').val()); 
        //$('#logo').attr("src", newImgSrc); 
        //alert($('#logo').attr("src")); 
        //alert($('#uploading').val()); 

       }); 
      }); 

    </script> 
    </head> 

    <body> 

    <img src="Lighthouse.jpg" name="logo" alt="logo" id="logo" width="200" /> 

    <br/> 

    <form name="myWebForm" class="myWebForm" action="#" method="post"> 
     <h3>Change Default Logo</h3> 
      <input type="file" name="uploadField" id="uploading" /> 
     <p><b>Allow extensions:</b> .png, .bmp, .jpg, .jepg, .gif<p> 
     <p><b>Dimensions:</b> 50px x 80px<p> 
     <input type="button" name="addButton" id ="addButton" class="addButton" value="+ Add" /> 
     <input type="button" name="cancelButton" id ="cancelButton" class="cancelButton" value="X Cancel" /> 
    </body> 
</html> 

如果你使用iframe运输时,它的加载,你可以从IFRAME的路径。

<script> 
$('#upload-frame').load(function(e) { 
    $('img').attr('src', $(this).contents().find('body').html()); 
}); 
</script> 
<form method="post" action="upload.php" enctype="multipart/form-data" 
     id="upload-form" target="upload-frame"> 
    <input type="file" name="uploadField" id="uploading" /> 
    <input type="submit" value="upload"/> 
</form> 
<iframe id="upload-frame" name="upload-frame"></iframe> 

你可以这样做服务器:

$info = pathinfo(basename($_FILES['image']['name'])); 
$ext = strtolower($info['extension']); 
if (in_array($ext, array('png', 'jpg', 'gif', 'bmp'))) { 
    $path = 'SOME/PATH/filename.' . $ext; 
    if (move_uploaded_file($_FILES['image']['tmp_name'], $path)) { 
     echo $path; 
    } 
} 
+0

服务器端代码看起来像PHP,OP不能使用它。 – 2013-03-14 15:44:33

+0

@MarcelKorpel抱歉,我不知道Asp.Net,但我相信你也可以做同样的事情。只要搜索'上传asp.net' – jcubic 2013-03-14 15:46:52

您可以随时使用FileSystem API。首先,我们输入:

<input type="file" id="MyImage" /> 

监听变化,抓住文件:

document.getElementById('MyImage').onchange = function(e) { 
    // Get the first file in the FileList object 
    var imageFile = this.files[0]; 
    // get a local URL representation of the image blob 
    var url = window.URL.createObjectURL(imageFile); 
    // Now use your newly created URL! 
    someImageTag.src = url; 
} 

希望帮助!

+0

这实际上帮助我解决了这个问题!谢谢! – 2013-03-15 19:00:31

+0

没问题!我很高兴能够提供帮助。它实际上是答案吗?如果是这样,请将此标记为已回答,但如果不是,我很高兴我可以指引您朝着正确的方向发展:) – 2013-03-18 03:51:43