2016-09-25 1 views
1

私は困惑しています。私は正常にサイズ変更された画像/ blobをサーバーフォルダにアップロードできました。 The problem is that the image/blob upload is always called blob.クライアント側で名前を変更する方法はありますか、それともサーバー側で行うべきですか。ここ
もしそうなら、あなたは私の例をお願いすることができますが、私が通信に使用しています2つのスクリプトが名前をBLOBに変更form.append

クライアント側にあるサイズを変更

<script> 
function handleFiles(){ 
var dataurl = null; 
var filesToUpload = document.getElementById('input').files; 
var file = filesToUpload[0]; 

// Create an image 
var img = document.createElement("img"); 
// Create a file reader 
var reader = new FileReader(); 
// Set the image once loaded into file reader 
reader.onload = function(e) 
{ 
    img.src = e.target.result; 

    img.onload = function() { 
     var canvas = document.createElement("canvas"); 
     var ctx = canvas.getContext("2d"); 
     ctx.drawImage(img, 0, 0); 

     var MAX_WIDTH = 200; 
     var MAX_HEIGHT = 400; 
     var width = img.width; 
     var height = img.height; 

     if (width > height) { 
      if (width > MAX_WIDTH) { 
      height *= MAX_WIDTH/width; 
      width = MAX_WIDTH; 
      } 
     } else { 
      if (height > MAX_HEIGHT) { 
      width *= MAX_HEIGHT/height; 
      height = MAX_HEIGHT; 
      } 
     } 
     canvas.width = width; 
     canvas.height = height; 
     var ctx = canvas.getContext("2d"); 
     ctx.drawImage(img, 0, 0, width, height); 
     dataurl = canvas.toDataURL("image/jpeg",.2); 
     var blobBin = atob(dataurl.split(',')[1]); 
     var array = []; 
     for(var i = 0; i < blobBin.length; i++) { 
     array.push(blobBin.charCodeAt(i)); 
     } 
     var files = new Blob([new Uint8Array(array)], {type: 'image/jpg', name: ""}); 
     var filename = getFileName() 



     // Post the data 
     var fd = new FormData(); 
     fd.append("image",files); 
     $.ajax({ 
      url: 'http:///www.i-audit-jci.com/upload.php', 
      data: fd, 
      cache: false, 
      contentType: false, 
      processData: false, 
      type: 'POST', 
      success: function(data){ 
       $('#form_input')[0].reset(); 
       location.reload(); 
      } 
     }); 
    } // img.onload 
} 
// Load files into file reader 
reader.readAsDataURL(file); 
} 
</script> 

サーバーPHP

<?php 
$upload_image = $_FILES["image"][ "name" ]; 
$a = ('" alt="" />'); 
$folder = "images/"; 
move_uploaded_file($_FILES["image"]["tmp_name"], "$folder".$_FILES["image"]["name"]);; 
$file = 'images/'.$_FILES["image"]["name"]; 
$uploadimage = $folder.$_FILES["image"]["name"]; 
$newname = $_FILES["image"]["name"]; 
$msg = ''; 
if($_SERVER['REQUEST_METHOD']=='POST'){ 
$a = ('" alt="" />'); 
$image = $_FILES['image']['tmp_name']; 
$img = file_get_contents($image); 
$con = mysqli_connect('mysql***','***','***','***') or die('Unable To connect'); 
$sql = ("INSERT into links (hyper_links) VALUES('<img src=\"\https://www.i-audit-jci.com/images/".$_FILES['image']['name']."$a')"); 

$stmt = mysqli_prepare($con,$sql); 

mysqli_stmt_bind_param($stmt, "s",$img); 
mysqli_stmt_execute($stmt); 

$check = mysqli_stmt_affected_rows($stmt); 
if($check==1){ 
    $msg = 'Successfullly UPloaded'; 
}else{ 
    $msg = 'Could not upload'; 
} 
mysqli_close($con); 
} 
?> 
<?php 
echo $msg; 
?> 
+0

私のああ、それはいくつかの恐ろしいPHPコードです。また、PHPコードの最初の行は '$ _FILES [" image "] [" name "]'です。 'name'か' blob'です。 – Abela

+0

イメージフォルダ内の名前はちょうどブロブです – INOH

+0

名前を変更して名前を変更することができます(oldname、newname、context) – Cyclotron3x3

答えて

2

あなたは設定することができますFileオブジェクトの名前プロパティは、FormData.append()の第3パラメータでFormDataに渡されました。関数

var blob = new Blob([123], { 
 
    type: "text/plain" 
 
}); 
 
var data = new FormData(); 
 
// set `blob` name to `"file.txt"` 
 
data.append("file", blob, "file.txt"); 
 

 
console.log(data.get("file"), data.get("file").name);

+0

元のスクリプトに入れたい場所がわからない場合は、スニペットを追加してもらえますか? – INOH

+1

' '' File'オブジェクトの 'name'を設定するためにFormData.append()を使用します。たとえば、ファイル名を" "file.txtにするには' 'fd.append(" file "、file、" file.txt " ); '。 'javascript'の残りの部分は期待通りの結果を返すように見える – guest271314

+0

私は追加したので、ファイル名が同じままではいけません。var fd = new FormData();' 'fd.append(" image "、files) ; //blobファイル ' ' fd.append( "file"、file、 "file.txt"); ' – INOH

関連する問題