0

ここにあるファイル(画像)アップロードAPIを実装しようとしています:
Mediafire file Upload

この APIをクライアント側から使用しているため、ファイルを一度だけアップロードする必要があり、サーバーの帯域幅は大きなファイルには使用されません。クライアント側からのアップロードも時間を節約します。

*私のWebホスティングサービスには、実行時間と帯域幅に制限があります。

現在、上記の API で指定されたGETおよびPOSTパラメーターを正常に送信でき、ファイルがmediafire アカウントにアップロードされていますただし、 Same Origin Policyにより、応答を受信することはできません。

Javascript コード:

var url = "http://www.mediafire.com/api/upload/upload.php?"+"session_token="+getCookie("mSession")+"&action_on_duplicate=keep";

xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange=function()
{
     if(xmlhttp.readyState==4)
     {
          alert("Uploaded");
     }
}

xmlhttp.open("POST", url);

var formData = new FormData();
formData.append("Filedata", document.getElementById("myFile").files[0]);
xmlhttp.send(formData);

ここまでは順調なのですが、mediafire api からの応答がないため、アップロードしたファイルにアクセスできなくなりました。ただし、ファイル名がわかっている場合は、ファイルにアクセスするための回避策があります。PS : Mediafire はローカル ストレージと同じ名前を保持しますが、mediafire アカウントに同じ名前のファイルがある場合は変更されます。

したがって、2 つの解決策が考えられます。

  1. 上記の API に送信する前にファイルの名前を変更します
  2. またはAPIに示されているようにヘッダーデータを送信します

追加して2番目のソリューションを試しました:

xmlhttp.setRequestHeader("x-filename", "foobar1.jpg");

上記のコードに変更しますが、フォーム メソッドをPOSTからOPTIONSに変更し、mediafire アカウントにアクションはありません (ファイルはアップロードされません)。

私は何を間違っていますか?mediafireアカウントでアップロードされたファイルの名前を制御または少なくとも知ることができる他の方法はありますか.

4

1 に答える 1

0

POSTリクエストの場合、カスタム ヘッダーを指定すると、ブラウザーはプリフライト リクエスト ( POSTではなくオプション) を受け取ります。オリジンが許可する場合、ブラウザは POST リクエストを受け取ります。参照 ( cors )

于 2013-10-31T02:59:16.837 に答える