2

Quickbase C# SDKを使用して、外部サイトから Quickbase にフォームを送信しています。フォームにファイルを添付したいのですが、方法がわかりません。

以下は私のコードの削除されたバージョンです:

ASPX

<form id="form1" runat="server">
<asp:TextBox ID="txtFileName" CssClass="textbox" Columns="40" runat="server"></asp:TextBox>
<input type="file" id="attachment1" runat="server" />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
</form>

CS

protected void btnSubmit_Click(object sender, EventArgs e)
{
    IQClient client = QuickBase.Login("username", "password", "domain"); 
    IQApplication app = client.Connect("db_id", "app_token";
    AppInfo appInfo = app.GetApplicationInfo();
    IQTable table = app.GetTable("table_id");

    IQRecord newRecord = table.NewRecord();
    newRecord["File Name"] = txtFileName.Text;
    // attach file?
    newRecord.AcceptChanges();
    table.AcceptChanges();
    client.Logout();
}

前もって感謝します。

4

1 に答える 1

2

もちろん、StackOverflow に送信した後、自分の質問を見つけます。もちろん。

しかし、他の人が同じ問題を抱えている場合に備えて、私の解決策を投稿します。

これを機能させるには、 QuickBase C# SDKに関数を追加し、DLL を再コンパイルする必要がありました。

次の行を IQRecord.cs に追加します。

void UploadFile(string columnName, string filePath);

この関数を QRecord.cs に追加します。

public void UploadFile(string columnName, string filePath)
{
    // create new field with columnName
    var index = GetColumnIndex(columnName);
    CreateNewField(index, columnName);

    // change field type to file
    Columns[index].ColumnType = FieldType.file;

    // Get field location with column index
    var fieldIndex = _fields.IndexOf(new QField(Columns[index].ColumnId));
    SetExistingField(index, fieldIndex, filePath);
}

次のようにコンパイルして使用します。

// code to upload file to temporary location
newRecord.UploadFile("Story", "path_to_temporary_location");
// delete temporary file
于 2013-12-31T07:35:28.603 に答える